【问题标题】:Unique log4net file name for each application session每个应用程序会话的唯一 log4net 文件名
【发布时间】:2014-07-08 08:46:16
【问题描述】:

我正在尝试为每个应用程序会话创建一个唯一的日志文件。示例:

  • MyApp-2014-07-08-04-36.log(第一次执行)
  • MyApp-2014-07-08-06-31.log(第二次执行,依此类推...)

使用下面的配置,它会创建文件。但是,我注意到有时它会在同一会话中创建另一个新文件。在应用程序会话期间应该有一个文件。

我使用PatternConverter更新了日志文件夹路径,所以日志路径可以由用户自己设置。

<configuration>
  <configSections>
    <section 
      name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net>
    <appender name="MainApplication" type="log4net.Appender.RollingFileAppender">
        <file type="log4net.Util.PatternString">
            <converter>
            <name value="folder" />
            <type value="MyApp.MainAppLogPatternConverter" />
            </converter>
            <conversionPattern value="%folder\MyApp-" />
        </file> 
      <param name="AppendToFile" value="true" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy-MM-dd-hh-mm-ss.lo\g"  />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d %-5p  %m%n" />
      </layout>
    </appender>
    <logger name="MyApp">
      <level value="DEBUG" />
      <maximumFileSize value="10MB" />
      <appender-ref ref="MainApplication" />
    </logger>
  </log4net>  
</configuration>

提前感谢您的建议。

【问题讨论】:

    标签: c# logging log4net


    【解决方案1】:

    当你阅读配置文件时,Log4net 会创建一个新的文件名。如果您看到多个日志文件,我的心理调试能力告诉我您在执行时多次调用 log4net 配置。或者文件超过 10mb,如您所配置:

    <maximumFileSize value="10MB" />
    

    【讨论】:

    • 感谢您的通灵调试能力 :) 文件大小绝对小于 10 MB,当创建多个日志文件时,某些日志文件有 1/2 行。我会继续调查...
    • 那么看来你初始化 log4net 多一次
    • 我已经通过设置 SaticFileName=true 并使用全局上下文来设置文件名解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 2013-06-04
    • 2014-03-08
    • 2023-04-10
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    相关资源
    最近更新 更多