Вот моя appender конфигурация от моего app.config. Это просто распечатывает литеральную строку вместо того, чтобы перевести его в дату (т.е. это буквально печатает" [ЗАПУСТИТЕ: %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} ] " />
<conversionPattern value="%date{yyyy-MM-dd HH:mm:ss} - %message" />
<footer value="[END] " />
</layout>
</appender>
Как я могу заставить это печатать дату/время в заголовке?
Легкий способ сделать это - подкласс 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>
Так как вы переопределили заголовок и подножку, вам даже не нужно добавлять его сюда. Заголовок будет добавляться каждый раз при запуске вашего приложения, и каждый раз при откате файла.