Я использую C#
Отношения Alex
Я считаю, что вы можете создать свой собственный аппендер на основе класса FileAppender
. Возможно, вам потребуется переопределить метод OpenFile
, чтобы создать файл в нужном месте.
Спасибо всем. Мы создали SortByFolderFileAppender, который наследует от RollingFileAppender
Пример конечного результата: somewhere\Logs\20100305\Client-104615.0
namespace CustomLogging
{
public class SortByFolderFileAppender : log4net.Appender.RollingFileAppender
{
protected override void OpenFile(string fileName, bool append)
{
//Inject folder [yyyyMMdd] before the file name
string baseDirectory = Path.GetDirectoryName(fileName);
string fileNameOnly = Path.GetFileName(fileName);
string newDirectory = Path.Combine(baseDirectory, DateTime.Now.ToString("yyyyMMdd"));
string newFileName = Path.Combine(newDirectory, fileNameOnly);
base.OpenFile(newFileName, append);
}
}
}
<appender name="SortByFolderFileAppender" type="CustomLogging.SortByFolderFileAppender">
<file type="log4net.Util.PatternString" value="Logs\Client"/>
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<datePattern value="-HHmmss"/>
<maxSizeRollBackups value="40"/>
<maximumFileSize value="1MB"/>
<countDirection value="1"/>
<encoding value="utf-8"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{HH:mm:ss.fff}|%-5level|%message%newline"/>
</layout>
</appender>
Вы можете использовать приложение Rollinglogfileappender, которое создает файлы с именами по дате и запускает новый файл в полночь. Затем просто напишите сценарий, который перемещает их на правильную карту в 00.01.
Что касается записи в журнал всех файлов в течение одного дня с максимальным размером 1 МБ на файл, вот пример:
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="Logging\\MWLog"/>
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<datePattern value="-yyyyMMdd"/>
<maxSizeRollBackups value="-1"/>
<maximumFileSize value="1MB"/>
<countDirection value="1"/>
<encoding value="utf-8"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{HH:mm:ss.fff}|%-5level|%message%newline"/>
</layout>
</appender>
Попробуйте это (все должно быть в порядке!):
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs\\" />
<appendToFile value="true" />
<DatePattern value="yyyy\\\\MM\\\\dd'.inf.log'" />
<rollingStyle value="Date" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout">
<header value="[Header] " />
<footer value="[Footer] " />
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] <%property{auth}> - %message%newline" />
</layout>
</appender>
Будет создан файл журнала с именем 'logs \ 2010 \ 04 \ 02.inf.log' (пусть дата будет 2010-04-02 )