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

Use*_*ser 12 log4net log4net-configuration

这是我的app.config中的appender配置.这只是打印出文字字符串而不是将其翻译成日期(即,字面上打印"[START:%date {MM/dd/yy HH:mm}]").

<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>
Run Code Online (Sandbox Code Playgroud)

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

Put*_*ato 18

这里回答.

<header value="[BEGIN LOGGING AT %date]%newline" type="log4net.Util.PatternString" />
<footer value="[END LOGGING AT %date]%newline" type="log4net.Util.PatternString" />
Run Code Online (Sandbox Code Playgroud)

对我来说就像一个魅力.无需编写一段代码.

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

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

另请参阅PatternString doc.

此外,我注意到在您编写第一个日志语句之前,日志文件不会出现.

  • @sluki:使用`<layout type ="log4net.Layout.DynamicPatternLayout">`而不是`PatternLayout` (2认同)

pdu*_*can 14

一种简单的方法是子类化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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

<layout type="MyAssembly.MyPatternLayout">
    <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss} - %message" />
</layout>
Run Code Online (Sandbox Code Playgroud)

由于您覆盖页眉和页脚,您甚至不需要在此处添加它.每次应用程序启动时,每次文件翻转时都会添加标题.