首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >看起来log4net Seq日志记录需要2 (!)XmlConfigurator.ConfigureAndWatch调用

看起来log4net Seq日志记录需要2 (!)XmlConfigurator.ConfigureAndWatch调用
EN

Stack Overflow用户
提问于 2022-11-09 09:39:03
回答 1查看 22关注 0票数 0

在Seq.Client.log4Net 6上使用Seq.Client.log4Net (3.1.0)时,我观察到一种奇怪的行为:

只有在调用日志方法之前和之后调用XmlConfigurator.ConfigureAndWatch时,才能登录到Server。似乎只有second会受到影响(控制台和文件日志记录是在没有第二次XmlConfigurator.ConfigureAndWatch调用的情况下执行的!)

登录到Server可以正常工作:

代码语言:javascript
复制
 ILog log = LogManager.GetLogger(GetType());
 XmlConfigurator.ConfigureAndWatch( new FileInfo(@"\log4net.config"));
 log.Info("Entering application.");
 log.Warn("Exiting application.");
 XmlConfigurator.ConfigureAndWatch(new FileInfo(@"log4net.config")); //why is this required??

无Seq日志记录:

代码语言:javascript
复制
 ILog log = LogManager.GetLogger(GetType());
 XmlConfigurator.ConfigureAndWatch( new FileInfo(@"\log4net.config"));
 log.Info("Entering application.");
 log.Warn("Exiting application.");

log4net.config是:

代码语言:javascript
复制
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">      
 ..    
    </appender>
    
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
 ..
    </appender>
    
    <appender name="SeqAppender" type="Seq.Client.Log4Net.SeqAppender, Seq.Client.Log4Net">
      <bufferSize value="100" />      
      <serverUrl value="https://xxx:yy" />
      <apiKey value="" />
      <parameter>
        <parameterName value="Runtime" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value=".NET Framework" />
        </layout>
      </parameter>
      <parameter>
      <parameterName value="Config" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="ExternalConfig" />
      </layout>
      </parameter>     
    </appender>
   
    <root>
      <level value="DEBUG" />
      <appender-ref ref="ConsoleAppender" />
      <appender-ref ref="RollingLogFileAppender" />
      <appender-ref ref="SeqAppender" />
    </root>
  </log4net>

根据文档,一个对ConfigureAndWatch的调用就足够了,所以我非常困惑这里发生了什么。汉克斯什么主意都行!

EN

回答 1

Stack Overflow用户

发布于 2022-11-09 21:51:17

您需要在退出应用程序之前调用LogManager.Shutdown(),以确保将所有事件刷新到Seq。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74372696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档