NLog: Несколько логов, имя лога на момент запуска, системные пути в fileName
От: QuAzI Беларусь  
Дата: 22.04.15 11:40
Оценка: 2 (1)
Накопилось несколько вопросов с NLog, хотелось бы расставить точки над Ы

1. Как в NLog работать одновременно с несколькими логами?
Например есть один первичный лог основного приложения fileName="${basedir}/logs/${shortdate}.log"
Основной процесс мониторит состояние очереди задач, когда что-то появляется, выполняется обработка,
соответственно для этой задачи хотелось бы иметь отдельный лог fileName="${basedir}/logs/${shortdate}-${taskname}.log"
где ${taskname} хотелось бы заполнить своим значением.

2. Как заморозить имя лога, чтобы оно оставалось таким как было на момент запуска или первой записи?
Т.к. если в п.1 поменять ${shortdate} на ${longdate}.log чтобы более чётко разделить логи по времени,
то чуть ли не на каждое сообщение генерится отдельный лог, образуется бесполезная куча мусора,
с которой невозможно адекватно работать

3. Как можно в fileName прописать %USERPROFILE%, %LOCALAPPDATA% или директорию Documents профиля пользователя?
Т.к. писать в директорию приложения моветон, да и права из-за этого нужно повышать — это всегда не есть хорошо
nlog log c#
Re: NLog: Несколько логов, имя лога на момент запуска, системные пути в fileName
От: hardcase Пират http://nemerle.org
Дата: 22.04.15 12:03
Оценка: 6 (1)
Здравствуйте, QuAzI, Вы писали:

QAI>3. Как можно в fileName прописать %USERPROFILE%, %LOCALAPPDATA% или директорию Documents профиля пользователя?


Можно пользоваться переменными окружения:
<target name="LogFile" xsi:type="File" fileName="${environment:variable=TEMP}\blabla.log" />
/* иЗвиНите зА неРовнЫй поЧерК */
Re: NLog: Несколько логов, имя лога на момент запуска, системные пути в fileName
От: mogikanin Россия  
Дата: 22.04.15 20:15
Оценка: 6 (1)
Здравствуйте, QuAzI, Вы писали:

QAI>Накопилось несколько вопросов с NLog, хотелось бы расставить точки над Ы


QAI>3. Как можно в fileName прописать %USERPROFILE%, %LOCALAPPDATA% или директорию Documents профиля пользователя?

QAI>Т.к. писать в директорию приложения моветон, да и права из-за этого нужно повышать — это всегда не есть хорошо

fileName="${specialfolder:folder=LocalApplicationData}\ProductName\Logs\log.txt" />

https://github.com/NLog/NLog/wiki/Special-Folder-Layout-Renderer
Re: NLog: Несколько логов, имя лога на момент запуска, системные пути в fileName
От: mogikanin Россия  
Дата: 22.04.15 20:30
Оценка: 9 (2) +1
Здравствуйте, QuAzI, Вы писали:

QAI>Накопилось несколько вопросов с NLog, хотелось бы расставить точки над Ы


Для 1 и 2 можно использовать ${event-context:item=String}
https://github.com/NLog/NLog/wiki/Event-Context-Layout-Renderer

т.е.
fileName="${specialfolder:folder=LocalApplicationData}\ProductName\Logs\log-${event-context:item=taskname}.txt" />

а где-то в коде
       LogEventInfo theEvent = new LogEventInfo(LogLevel.Info, _nlogger.Name, message);
       theEvent.Properties["taskname"] = "task1";
       _nlogger.Log(theEvent);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.