代码之家  ›  专栏  ›  技术社区  ›  User

如何在页眉/页脚中使用日期模式?

  •  12
  • User  · 技术社区  · 16 年前

    <appender name="RollingLogFileAppender"
              type="log4net.Appender.RollingFileAppender">
      <file value="C:\somelog" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="-yyyy-MM-dd'.txt'" />
      <layout type="log4net.Layout.PatternLayout">
        <header value="[START:  %date{MM/dd/yy HH:mm} ]&#13;&#10;" />
        <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss} - %message" />
        <footer value="[END]&#13;&#10;&#13;&#10;" />
      </layout>
    </appender>
    

    如何让它在标题中打印日期/时间?

    4 回复  |  直到 12 年前
        1
  •  14
  •   Philipp M    12 年前

    实现这一点的一个简单方法是子类化 log4net.Layout.PatternLayout

    using System;
    using log4net.Layout;
    
    namespace MyAssembly
    {
        class MyPatternLayout : PatternLayout
        {
            public override string Header
            {
                get
                {
                    var dateString = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    return string.Format("[START:  {0} ]\r\n", dateString);
                }
            }
        }
    }
    

    在程序集中包含此新类,并在文件中使用新类型,如下所示:

    <layout type="MyAssembly.MyPatternLayout">
        <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss} - %message" />
    </layout>
    

        2
  •  21
  •   chagel    4 年前

    答复 here .

    <layout type="log4net.Layout.DynamicPatternLayout">
      ...
      <header value="[BEGIN LOGGING AT %date]%newline"/>
      <footer value="[END LOGGING AT %date]%newline"/>
      ...
    </layout>
    

    此外,在我们通常使用的项目中:

    <header type="log4net.Util.PatternString" value="Our Application Name version %property{Assembly.Version}, .NET version %property{Runtime.Version}, %date ***%newline"/>
    

    看看 PatternString 博士也是。

    我还注意到,只有编写第一条日志语句,日志文件才会出现。

        3
  •  2
  •   k3yz101    8 年前

    建立在 @Wizou's DynamicPatternLayout Class 文档

    PatternLayout和DynamicPatternLayout之间的一个重要区别是在配置中处理页眉和页脚参数。DynamicPatternLayout的页眉和页脚参数在语法上必须是PatternString的形式,但不应标记为log4net.Util.PatternString类型。这样做会导致在配置时静态转换模式,并导致DynamicPatternLayout执行与PatternLayout相同的操作。

    <layout type="log4net.Layout.DynamicPatternLayout"> <param name="Header" value="%newline**** Trace Opened Local: %date{yyyy-MM-dd HH:mm:ss.fff} UTC: %utcdate{yyyy-MM-dd HH:mm:ss.fff} ****%newline" type="log4net.Util.PatternString" /> <param name="Footer" value="**** Trace Closed %date{yyyy-MM-dd HH:mm:ss.fff} ****%newline" /> </layout>

        4
  •  1
  •   Martin Capodici    14 年前

    我遇到了这个问题,我使用的一个快速解决方法是只使用固定的页眉和页脚。然后在拥有ILog对象后立即执行此操作:

    log.Info(string.Format("[START: {0} ]\r\n", dateString))

    因此,在标题下,您将获得所需的信息。

    例如

    ===Start===
    [START:  2012-02-23 12:12:12 ]
    
    logs...