【问题标题】:Why won't Log4Net work on Azure with Table Storage?为什么 Log4Net 不能在带有表存储的 Azure 上工作?
【发布时间】:2013-03-14 11:20:46
【问题描述】:

急切地寻求一种解决方案,让 log4net 在 Azure Worker 角色中工作。慢慢让我发疯。

我已按照此博客 http://blog.tylerdoerksen.com/2012/04/17/logging-in-azure-part-2table-storage (谢谢)中概述的步骤进行操作,这似乎是有道理的,并且 log4net 日志记录在以下条件下就像一个梦一样工作:

  1. 在模拟器中本地运行 Worker 角色并将日志持久化到本地存储中
  2. 在模拟器中本地运行辅助角色并将日志持久化到远程暂存 Azure 表存储中

当我将辅助角色服务部署到 Azure 时,它​​不会在 LogEntities 表中记录任何内容。正是这一点,这一点令人难以置信的沮丧。

我在 Worker Role app.config 中打开了 log4net 调试,我在 WADLogsTable 中看到了以下跟踪

log4net:完成名为 [TableStorageAppender] 的附加程序。

就是这样。自添加

后,我通常不会看到其他任何 log4net 调试信息
<appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
</appSettings>

到我的 Worker Role app.config。

我在 Worker Role 覆盖的 Run 方法中配置 log4net:

public override void Run()
 {
        try
        {

            XmlConfigurator.Configure();
            ILog Logger = LogManager.GetLogger(GetType());
            Trace.WriteLine("Trace: CheckInService.Run()");
            Logger.Info("log4net: CheckInService.Run()");
            //open the Service and do some other stuff etc 
            while (true)
            {
                Thread.Sleep(1800000);
            }
        catch (Exception ex)
        {
            Trace.TraceError("There was a problem opening the CheckInService");
        }
 }

这是我的完整 app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" name="log4net" />
  </configSections>
  <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
  </appSettings>
  <log4net>
    <appender type="Cloud.Services.Logging.TableStorageAppender, Cloud.Services.Logging" name="TableStorageAppender">
    </appender>
    <root>
      <level value="All" />
      <appender-ref ref="TableStorageAppender" />
    </root>
  </log4net>
  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
          name="AzureDiagnostics">
          <filter type="" />
        </add>
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

日志记录附加程序 (TableStorageAppender) 实现在它自己的程序集 (Cloud.Services.Logging) 中,但我假设这不会有任何区别?

有人有什么想法吗?

【问题讨论】:

  • 你解决过这个问题吗?我也有同样的问题

标签: azure log4net


【解决方案1】:

发布到 Azure 时是否包含 Cloud.Services.Logging 程序集(CopyLocal = True)?

【讨论】:

    【解决方案2】:

    也许是缓冲问题?尝试在 appender 配置中设置 bufferSize=1 https://github.com/stemarie/log4net.Azure/issues/20#issuecomment-135891543

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-09
      相关资源
      最近更新 更多