Ошибка прокрутки файла Log4Net - PullRequest
0 голосов
/ 22 декабря 2009

У меня есть следующая конфигурация log4net:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="Logs/%date{yyyy-MM-dd} Service.log" />           
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <rollingStyle value="Date"/>
    <datePattern value="yyyy-MM-dd"/>
    <maxSizeRollBackups value="100"/>
    <maximumFileSize value="15MB"/>
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %-5level %logger: %message%newline" />
    </layout>
</appender>

Данные будут постоянно записываться в файл журнала и катятся ОК, но в итоге я получил такие файлы:

2009-12-21 Service.log2009-12-22    (this is what it will write tonight)  
2009-12-21 Service.log    <-- this being the latest file  
2009-12-21 Service.log2009-12-21    <-- last updated 23:59

Я хочу, чтобы файлы были такими:

2009-12-21 Service.log
2009-12-22 Service.log
2009-12-23 Service.log

Ответы [ 3 ]

1 голос
/ 31 декабря 2009

Избавьтесь от имени файла и типа в элементе файла:

<file value="Logs\" />

Затем измените свой datePattern на (примечание: убедитесь, что вы правильно экранировали буквы в 'Service', как g в 'log' - это специальный формат, поэтому вам нужно экранировать его с помощью '\'):

<datePattern value="yyyy-MM-dd Service.lo\g"/>
0 голосов
/ 01 сентября 2013

Вы можете использовать функцию ниже. В этой функции сначала получите местоположение файла, которое вы задали в webconfig, и после этого вы можете добавить любой путь, который вы хотите! (например, Дата, наш Клиент или ...)

WebConfig:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="C:\\t4\\"/>
      <appendToFile value="true"/>
      <rollingStyle value="Composite"/>
      <datePattern value="_yyyy-MM-dd.lo'g'"/>
      <maxSizeRollBackups value="10"/>
      <maximumFileSize value="1MB"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date User:%identity IP:%X{addr} Browser: %X{browser} Url: %X{url} [%thread] %-5level %c:%m%n"/>
      </layout>
</appender>

Функция:

public static void ChangeFileLocation(string _CustomerName,string _Project)
{
    XmlConfigurator.Configure();
    log4net.Repository.Hierarchy.Hierarchy h = (log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository();          

    foreach (IAppender a in h.Root.Appenders)
    {
        if (a is FileAppender)
        {
            FileAppender fa = (FileAppender)a;
            string sNowDate=  DateTime.Now.ToLongDateString();
            // Programmatically set this to the desired location here
            string FileLocationinWebConfig = fa.File;
            string logFileLocation = FileLocationinWebConfig + _Project + "\\" + _CustomerName + "\\" + sNowDate + ".log";

            fa.File = logFileLocation;
            fa.ActivateOptions();
            break;
        }
    }
}

и результат такой: C:\Logs\TestProject\Customer1\Saturday, August 31, 2013.log

0 голосов
/ 22 декабря 2009

Я думаю, что следующее должно быть то, что вам нужно.

Добавьте следующий элемент в .

<staticLogFileName value="true" />
...