簡體   English   中英

Log4net 未登錄 Azure Webapp

[英]Log4net not logging on Azure Webapp

對於 web 服務,我已經配置了 log4net,並且在本地可以正常工作,但當 webapp 部署在 Azure Webapp 上時就不行了。 該目錄已創建,但文件中沒有記錄任何內容..

這是我的配置:

<log4net>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
  <file value="log/sms.log" />
  <appendToFile value="true" />
  <maximumFileSize value="10MB" />
  <maxSizeRollBackups value="10" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date %level - %message%newline" />
  </layout>
</appender>
<logger name="TheLogger">
  <appender-ref ref="RollingFile" />
</logger>

在我的 AssemblyInfo.cs 中,我有:

[assembly: XmlConfigurator(Watch = true)]

在啟動 class 我有:

public static ILog Logger { get; private set; }

    public void Configuration(IAppBuilder appBuilder)
    {
        Logger = LogManager.GetLogger("TheLogger");
        Logger.Info("Application start...");
    }

顯然,我的配置正在被拾取,因為在我的日志文件中寫入了小時/日期格式以及應用程序啟動...但不是日志記錄信息。 我錯過了什么?

確保您不要忘記添加root配置。 是否正在調試以在發布模式下在Azure中進行部署和部署?

<log4net>
  <root>
    <level value="INFO" />
    <appender-ref ref="RollingFile" />
  </root>
  <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
   <!-- ... -->
  </appender>
</log4net>

我遇到了同樣的問題並找到了解決方案。 我不得不在.Net Core API的程序class中替換這兩行代碼:

XmlDocument log4netConfig = new XmlDocument();
log4netConfig.Load(File.OpenRead("log4net.config"));

有了這個:

var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());
XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));

原因是因為在.Net Framework API 中我使用了程序集屬性來設置這個,現在我需要這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM