Как я использую шаблон даты в заголовке/нижнем колонтитуле?

Вот моя 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} ]&#13;&#10;" />
    <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss} - %message" />
    <footer value="[END]&#13;&#10;&#13;&#10;" />
  </layout>
</appender>

Как я могу заставить это печатать дату/время в заголовке?

12
задан Philipp M 15 October 2013 в 09:57
поделиться

1 ответ

Легкий способ сделать это - подкласс 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>

Так как вы переопределили заголовок и подножку, вам даже не нужно добавлять его сюда. Заголовок будет добавляться каждый раз при запуске вашего приложения, и каждый раз при откате файла.

14
ответ дан 2 December 2019 в 04:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: