代码之家  ›  专栏  ›  技术社区  ›  Simon Elms

是否可以将RollingFileAppender的文件名配置为包含日期和进程ID?

  •  1
  • Simon Elms  · 技术社区  · 6 年前

    THWS_Process1234_debug_20181102.log

    <appender name="DebugLogAppender" type="log4net.Appender.RollingFileAppender">      
      <file value="C:\Logs\THHWS_Process%processid_debug_.log"/>
      <staticLogFileName value="false"/>
      <datePattern value="yyyyMMdd"/>
      <preserveLogFileNameExtension value="true"/>
      <appendToFile value="true"/>
      <maxSizeRollBackups value="10"/>
      <maximumFileSize value="100MB"/>
      <rollingStyle value="Composite"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss.fff} | %thread | %-5level | %logger | %message%newline"/>
      </layout>
    </appender>
    

    我有两种日志,审计和调试。当我有一个问题要调查时,我希望两个相关的日志文件(用于审计和调试)具有相同的根文件名,以便按文件名排序,这两个文件相邻出现。所以我想生成如下的日志文件名:

    THHWS_20181102_Process1234_audit.log
    THHWS_20181102_Process1234_debug.log
    THHWS_20181102_Process9876_audit.log
    THHWS_20181102_Process9876_debug.log
    

    我想在web.config中配置文件名,而不必使用代码。是否可以通过web.config文件生成日期早于进程ID的文件名?

    我试过的

    1) 将进程ID添加到datePattern:

      ...     
      <file value="C:\Logs\THHWS_.log"/>
      ...
      <datePattern value="yyyyMMdd_Process%processid_debug"/>
      ...
    

    这导致文件名如下 THHWS_20181102_Proce33proce33i2_2ebuA.D..log ,我假设是因为它认为“s”表示“second”,而“d”和“g”表示.NET日期时间模式。

    <datePattern value="yyyyMMdd_Proce\s\s%proce\s\si\d_\debu\g"/>
    

    这让我更亲近: THHWS_20181102_Processprocessid_debug.log

    但是,有没有办法在日期之后包含进程ID?

    <appender name="DebugLogAppender" type="log4net.Appender.RollingFileAppender">      
      <file type="log4net.Util.PatternString" value="C:\Logs\THHWS_%date{yyyyMMdd}_Process%processid_debug.log"/>
      <staticLogFileName value="false"/>
      <appendToFile value="true"/>
      <maxSizeRollBackups value="10"/>
      <maximumFileSize value="100MB"/>
      <rollingStyle value="Composite"/>
      ...
    </appender>
    

    THHWS_20181102_Process20220_debug.log.2018-11-02

      <rollingStyle value="Size"/>
    

    这将产生正确的文件名: THHWS_20181102_Process22180_debug.log 但是,它不会在日期更改时滚动文件名。

    0 回复  |  直到 6 年前