Вы можете использовать фильтры в конфигурации или передать имя файла в вызов логгера.
Примечание. В этих примерах используется .WithProperty
(для NLog Logger
), представленный в NLog 4.6.3
Фильтры
Использование фильтров в правилах ведения журнала.мы используем LogFinal, поэтому нам нужны только правила один раз (не требуется для второго правила ведения журнала)
См. Фильтрация сообщений журнала в вики NLog
<rules>
<logger name="*" writeTo="file-error1">
<filters defaultAction='LogFinal'>
<when condition="${event-properties:target} == 'error2'" action="Ignore" />
</filters>
</logger>
<logger name="*" writeTo="file-error2">
</logger>
</rules>
Loggercall:
MyLogger.Log.Error("Error occurred..."); // writes to file-error1 target
MyLogger.Log.WithProperty("target", "error2").Error("Error occurred..."); // writes to file-error2 target
Передать имя файла
Передать имя файла в качестве свойства.Возможно, вы могли бы установить свойство по умолчанию в статическом методе Log
.
См. Также Документация по свойствам событий
<targets>
<target name="file" xsi:type="File"
....
fileName="${basedir}/logs/{event-properties:filename}"
... />
</targets>
Вызов Logger:
MyLogger.Log.WithProperty("filename", "error1.txt").Error("Error occurred...");
MyLogger.Log.WithProperty("filename", "error2.txt").Error("Error occurred...");