2013-11-26 1 views
3

Я использую NLog в первый раз в приложении winForm, которое будет работать в течение многих лет. Это приложение также регистрирует данные в текстовом файле. Поскольку приложение будет работать в течение многих лет, текстовый файл будет расти и расти. Вот почему я хочу ограничить размер текстового файла. Предположим, что при достижении предела 10 МБ текстовый файл начинает удалять последние записи для размещения новых данных. Как я могу это сделать с помощью NLog.с использованием NLog в первый раз

Некоторые, где в моем C# проекта У меня есть

private static Logger logger = LogManager.GetCurrentClassLogger(); 

logger.Trace("Error:.........."); // and similar msgs 

Мои NLog.config это (он просто записывает данные в текстовый файл)

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

    <targets> 
    <target name="logfile" xsi:type="File" fileName="${basedir}/file.txt" /> 
    </targets> 

    <rules> 
    <logger name="*" minlevel="Info" writeTo="logfile" /> 
    </rules> 
</nlog> 
+0

Не могли бы вы лучше объяснить, что вы имеете в виду (и что делает NLog делать во всем этом)? Также покажите нам, что вы пробовали до сих пор. – varocarbas

+0

@varocarbas NLog используется для регистрации – user2968369

+1

Я хочу воспользоваться этим инцидентом, чтобы подчеркнуть, насколько важно писать правильное описание: из текущей версии вашего вопроса ясно, что именно вы имеете в виду. Ваша первоначальная версия каким-то образом вводила в заблуждение для всех, кто знал об этом инструменте, и полностью вводил в заблуждение для тех, кто никогда не использовал этот инструмент (как и я). Поскольку Nlog можно понимать как логарифм времени N (что я понял). Причина, по которой я объясняю это, заключается в том, что я в последнее время нахожу немало «людей», больше интересующихся неправильным пониманием, чем помогая/помогая ... – varocarbas

ответ

3

Вы можете ограничить размер файла 10Мб и набор макс кол-файлы quest.ua архив 1:

<target xsi:type="File" 
     name="file" 
     layout="${longdate}|${level:uppercase=true}|${logger}|${message}"   
     archiveAboveSize="10000000" 
     maxArchiveFiles="1" 
     archiveFileName="${basedir}/log_archived.txt" 
     fileName="log.txt" /> 

Когда файл будет распространяться 10Мб, он будет архивировать, и ведение журнала будет продолжать новый файл. Когда новый файл будет расширяться до 10 МБ, он заменит архивный файл. Итак, у вас будет два файла - текущий и архивный.

+0

@varocarbas выглядит так, будто хочет используйте один файл, который будет содержать размер менее 10 МБ, а самые старые записи должны быть удалены при добавлении новых записей. Но это невозможно в NLog, поэтому я дал ему альтернативное решение с двумя файлами - текущим и архивным –

+1

Спасибо за разъяснение. Я удалил свой комментарий, когда ОП обновил свой вопрос с помощью кода. Я полностью не понял NLog. – varocarbas

+0

спасибо за ответ. Таким образом, вы имеете в виду, что все время у меня будет два файла, где я пишу, и один файл архива – user2968369