WorkerRole log4net跟踪追加器日志未出现在输出窗口中

WorkerRole log4net跟踪追加器日志未出现在输出窗口中,log4net,azure-worker-roles,azure-diagnostics,Log4net,Azure Worker Roles,Azure Diagnostics,我有许多工作者角色项目,我想利用log4net功能来记录信息。不幸的是,我的日志实际上没有出现在我的输出窗口中 我跨过调试器中的日志行,输出窗口将弹出以下行: “WaWorkerHost.exe”(CLR v4.0.30319:RdRuntime):已加载 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Caching\v4.0.0.0_uuB03F5F7F11D50A3A\System.Runtime.Caching.dll

我有许多工作者角色项目,我想利用log4net功能来记录信息。不幸的是,我的日志实际上没有出现在我的输出窗口中

我跨过调试器中的日志行,输出窗口将弹出以下行:

“WaWorkerHost.exe”(CLR v4.0.30319:RdRuntime):已加载 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Caching\v4.0.0.0_uuB03F5F7F11D50A3A\System.Runtime.Caching.dll'。 已跳过加载符号。模块已优化,调试器选项 “仅我的代码”已启用

鉴于这是我的代码,我很困惑为什么我会看到这个异常。以下是我的日志app.config设置:

 <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="Montetary.Agents.HappyBirthday.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <system.diagnostics>
    <trace>
      <listeners>
        <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
          <filter type="" />
        </add>
      </listeners>
    </trace>
  </system.diagnostics>
  <log4net>
    <appender name="AzureTraceAppender" type="log4net.Appender.TraceAppender">
      <layout type="log4net.Layout.PatternLayout">
        <!-- can be any pattern you like -->
        <conversionPattern value="%logger - %message" />
      </layout>
    </appender>
    <!-- does not have to be at the root level -->
    <root>
      <level value="ALL" />
      <appender-ref ref="AzureTraceAppender" />
    </root>
  </log4net>


,但结果是一样的

有些东西你可以检查:

在写入日志文件之前是否调用log4net configure(仅一次即可):

下一步是将刷新添加到配置中:

<appender name="AzureTraceAppender" type="log4net.Appender.TraceAppender">
  <param name="ImmediateFlush" value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <!-- can be any pattern you like -->
    <conversionPattern value="%logger - %message" />
  </layout>
</appender>

。它应该记录到您配置的侦听器中。将autoflush=“true”选项添加到跟踪元素。或者在您可以写入和访问的工作人员角色上查找目录以读取日志。

您要在哪里查看日志?它们在Visual studio输出窗口中不可见。您需要连接到存储帐户并查看表“WADLogsTable”,根据我读过的许多博客,traceappender应该在记录时写入输出窗口:如果这不是用于写入输出日志的正确log4net appender,请告诉我,我将使用任何工具。在将项目上载到Azure之前,我要确保我正在将正确的内容写入日志。如果您希望将日志写入输出窗口,则需要禁用配置文件中的诊断配置。您对的整个部分进行注释,然后尝试更新。我放弃了log4net,转而使用diagnostics框架。感谢peter,我将尝试使用ImmediateFlush来查看输出是否转到输出窗口。我已将XmlConfigurator添加到assemblyinfo,并包括ImmediateFlush,但没有骰子,仍然不起作用。我已经删除了log4net,现在正在直接使用正在工作的诊断工具。
<appender name="AzureTraceAppender" type="log4net.Appender.TraceAppender">
  <param name="ImmediateFlush" value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <!-- can be any pattern you like -->
    <conversionPattern value="%logger - %message" />
  </layout>
</appender>