WorkerRole log4net跟踪appender日志未出现在输出窗口中

Nat*_*lus 5 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_4.0.0.0__b03f5f7f11d50a3a\System.Runtime.Caching.dll ".跳过加载符号.模块已经过优化,调试器选项"Just My Code"已启用.

看到这是我的代码,我很困惑为什么我看到这个例外.下面是我的日志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>
Run Code Online (Sandbox Code Playgroud)

我试图在这个问题中遵循这个例子,但结果是一样的

Pet*_*ter 1

您可以检查一些事项:

在写入日志文件之前是否调用 log4net 配置(仅一次就足够了):

log4net.Config.XmlConfigurator();
Run Code Online (Sandbox Code Playgroud)

接下来的事情是将刷新添加到您的配置中:

<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>
Run Code Online (Sandbox Code Playgroud)

这将立即刷新消息。

确保已将 Azure 诊断配置为所有调试信息。

然后您可以启用调试内部log4net调试。请参阅此 log4net 常见问题解答页面上的内部调试。标准它应该记录到您已配置的侦听器。将 autoflush="true" 选项添加到跟踪元素。或者找到您可以写入并访问以读取日志的辅助角色目录。