Как настроить несколько логгеров в dll - PullRequest
1 голос
/ 19 апреля 2011

Я новичок в log4net, и я не совсем уверен, как правильно настроить мой app.config, когда в DLL есть несколько регистраторов. Ну, я делаю, но мне интересно, есть ли более простой способ, когда есть 10-20 различных регистраторов. Может также случиться так, что я просто не понимаю этого.

Хорошо, давайте предположим, что dll использует следующие логгеры (на самом деле это примерно 20 различных операторов, подобных этому):

private static readonly ILog log = LogManager.GetLogger(typeof(XmlConfiguration));
private static readonly ILog log = LogManager.GetLogger(typeof(ClassValidator));

Значит ли это, что мне нужно сделать что-то подобное в моем app.config (я для краткости опускаю appenders)?

<logger name="XmlConfiguration" additivity="false">
  <level value="DEBUG"/>
  <appender-ref ref="FileLog"/>
</logger>

<logger name="ClassValidator" additivity="false">
  <level value="DEBUG"/>
  <appender-ref ref="FileLog"/>
</logger>

Могу ли я настроить его так, чтобы каждый регистратор, предоставляемый определенным dll или частичным пространством имен (регистраторы в dll находятся в нескольких разных пространствах имен, но имеют общее корневое пространство имен), все идут в один и тот же источник журналирования (файл, консоль и т. Д.)?

1 Ответ

2 голосов
/ 19 апреля 2011

Да, вы правы. Вы можете установить разные уровни входа для разных библиотек путем настройки нескольких регистраторов:

Вот пример, который я успешно использовал:

<!-- ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
<root>
  <level value="Error"/>
  <appender-ref ref="RollingLogFileAppender"/>
</root>

<logger name="NHibernate">
  <level value="ERROR" />
</logger>

...