Я знаю, что это немного поздно, но есть другое решение, описанное здесь: Настройте log4net или NLog с XML из кода , хотя он отвечает на другой вопрос.
У меня была та же проблема, описанная KallDrexx,Меня не устраивает несколько файлов конфигурации NLog (несколько проектов в одном решении), поэтому я создал класс NLogHelper, у которого есть метод, возвращающий конфигурацию:
public static XmlLoggingConfiguration SetNlogConfiguration()
{
var sr = new StringReader(NlogXmlConfigString1());
var xr = XmlReader.Create(sr);
var config = new XmlLoggingConfiguration(xr, null);
return config;
}
Отдельный метод просто возвращает строку xmlв моем случае:
private static string NlogXmlConfigString1()
{
return @"<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='${specialfolder:file=My_Logger.txt:folder=Desktop}' />
</targets>
<rules>
<logger name='*' minlevel='Info' writeTo='logfile' />
</rules>
</nlog>";
}
Наконец, я просто установил конфигурацию в соответствующем конструкторе класса:
NLog.LogManager.Configuration = NlogHelper.Helper.SetNlogConfiguration();
Очевидно, что он может быть реорганизован и могут быть переданы такие элементы, как имя файла журналав качестве параметров, если требуется.Конфигурационный XML может быть просто заменен на любую вашу конфигурацию.Также, кажется, предлагает возможность легко указать несколько конфигураций, которые выбираются во время выполнения.
Мне это нравится, потому что я считаю, что это дает мне больший контроль над конфигурацией NLog в коде и во время развертывания.