Я предпочитаю внешние файлы конфигурации для log4net, так как log4net может отслеживать эти файлы, и уровень может быть изменен без изменения файла app/web.config. Я немного борюсь за это в NServiceBus. Я использую Вот файл мой внешний конфигурационныйВнешний файл конфигурации NServiceBus и Log4Net
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="RollingFile" type="log4net.Appender.FileAppender">
<file value="C:\Logs\NServiceBusApplication.log" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %d{hh:mm:ss} %message%newline" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="RollingFile" />
</root>
</log4net>
Самый простой способ сделать так, чтобы поместить атрибут в AssemblyInfo.cs
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "ApplicationName.log4net.xml", Watch = true)]
Это не работает в NServiceBus (я использую NServiceBus .Host.exe). Тогда я попытался назвать
SetLoggingLibrary.Log4Net(() => XmlConfigurator.Configure(log4netConfigUri));
перед тем Configure.With
в EndpointConfig
. С этим log4net читает файл конфигурации из правильного местоположения, он не следит за ним, поэтому, когда я меняю уровень журнала, он не отражается в приложении.
Далее я попытался с AppSettings
<appSettings>
<add key="log4net.Config" value="ApplicationName.log4net.xml"/>
<add key="log4net.Config.Watch" value="True"/>
</appSettings>
Опять же, log4net читает это, а затем читает ApplicationName.log4net.xml, он по-прежнему не смотрит на него.
Как настроить log4net в службе NServiceBus, который использует NServiceBus.Host.exe для
- Прочитайте форму конфигурационный файл внешнего файла конфигурации (т.е. log4net конфигурации не в app.config)
- Просмотрите внешний файл конфигурации, чтобы отразить любые изменения внешнего файла конфигурации.
Убедитесь, что вы добавить IWantCustomLogging в конфигурацию вашей конечной точки? –
Я верю, что сделал это во втором варианте, но я проверю еще раз и дам вам знать. –
[сборка: log4net.Config.XmlConfigurator (ConfigFile = "ApplicationName.log4net.xml", Watch = true)] не влияет на IWantCustomLogging или без него. Журнал даже не направлен на нужный файл, поэтому этот параметр не влияет. –