Добавьте текущую дату в файл журнала с помощью Log4Net

StackOverflow https://stackoverflow.com/questions/533804

  •  22-08-2019
  •  | 
  •  

Вопрос

Все, что я хочу сделать, это добавить текущую дату и время в мой файл журнала, скажем:

"export_(Wed_Feb_21_2009_at_1_36_41PM)"

Вот моя текущая конфигурация из my app.config

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="c:\export.txt" />
    <appendToFile value="true" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message %stackTrace%newline" />
    </layout>
</appender>

Возможно ли добавление даты в мой файл журнала, или это одна из тех вещей, которые мне нужно сделать в коде, а не в конфигурации?

Это было полезно?

Решение

Добавьте следующее в свой конфигурационный файл

<appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net">
  <param name="File" value="c:\\ProjectX\\Log\\log.txt"/>
  <param name="AppendToFile" value="true"/>
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
  <param name="RollingStyle" value="Date"/>
  <param name="DatePattern" value="yyyy.MM.dd"/>
  <param name="StaticLogFileName" value="true"/>
  <layout type="log4net.Layout.PatternLayout,log4net">
    <param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
  </layout>
</appender>

Другие советы

Чтобы создать имя файла, подобное:

log_2013-12-19.txt

вносить изменения

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <param name="File" value="log_"/>
    <param name="RollingStyle" value="Date"/>
    <param name="DatePattern" value="yyyy-MM-dd.\tx\t" />
    <param name="StaticLogFileName" value="false"/>
</appender>

Пожалуйста, обратите внимание на параметр "DatePattern", где . x задает расширение имени файла .txt.Если вы укажете .txt вместо . x\ t, то это позволит сохранить имя файла с расширением .PxP, если время вечера, или .AxA, если утро.поэтому я использовал для принудительного написания символа вместо шаблона.Также может быть добавлено время и любой необходимый временной шаблон.

Итак, это может быть действительно то, что Philipp M разыскиваемый.

Для тех, кто заинтересован, вот решение:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <param name="File" value="C:\\Users\\chris\\Documents\\log_.txt"/>
    <param name="RollingStyle" value="Date"/>
    <param name="DatePattern" value="_(yyyy.MM.dd-hh_mm_ss)"/>
    <param name="StaticLogFileName" value="false"/>
    <maximumFileSize value="100KB" />
    <appendToFile value="true" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />           
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message %stackTrace%newline" />
    </layout>
</appender>

и модульный тест, который проверяет это:

[Test]
public void TestLogger()
{
    logger.Info("Start Log");

    for (int i = 0; i < 2500; i++)
    {
        logger.Info(i);
    }

    logger.Info("End Log Log");
}

Это приводит к следующему результату:

    log_.txt_(2009.02.19-01_16_34)

Не совсем то, чего я хотел, но лучше, чем то, что у меня было раньше.

Если вы хотите использовать суффикс .log (для создания файла типа myLogPrefix.20160309.log), используйте:

<appender name="GeofenceFileAppender" type="log4net.Appender.RollingFileAppender">
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <file type="log4net.Util.PatternString" value="C:\\Logs\\myLogPrefix" />
        <appendToFile value="true" />
        <rollingStyle value="Date" />
        <datePattern value=".yyyyMMdd.lo'g'" />
        <staticLogFileName value ="false" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger – %message%newline" />
        </layout>
</appender>

Подводные камни - это staticLogFileName = false который позволяет вам генерировать свертки "на лету" (вместо того, чтобы перезапускать службу \ сервер) и неудобный 'g' в datepattern с тех пор как g является волшебным персонажем в datePattern.На сайте log4net нет хорошей документации для изучения этого, так что на самом деле это мудрость, полученная методом проб и ошибок и изучением опыта других людей.

Использование Имя файла StaticLogFileName:

<param name="StaticLogFileName" value="true"/>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top