Действительно ли это возможно к именам лесоруба группового символа в log4net конфигурации?

В моем заявлении я использую log4net со всеми типами, создающими их собственного лесоруба на основе их типа - например:

private static readonly ILog Log = LogManager.GetLogger(typeof(Program));

Поскольку я развиваюсь, я оставляю лесоруба корня на ОТЛАДКЕ, чтобы поймать всю продукцию регистрации из моего кодекса.

Однако сторонний компонент также использует этот тот же подход, но производит 100 с сообщений регистрации секунда, ни одна из которой я интересуюсь.

Это возможный использовать своего рода wildcarding в конфигурации лесоруба, вынудить всех их лесорубов только зарегистрироваться в ПРЕДУПРЕЖДАЕТ, например:

 <logger name="com.thirdparty.*">
    <level value="WARN"/>
  </logger>

[Точный пример выше, используя * не работает]

24
задан Rob Levine 7 January 2010 в 22:11
поделиться

2 ответа

Вы можете просто указать часть пространства имен, чтобы оно применялось ко всем сообщениям в этом пространстве имен (включая вложенные).

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

  <root>
    <level value="FATAL" />
    <appender-ref ref="RollingFile" />
  </root>

  <logger name="MyCompany.Web" >
    <level value="WARN" />
    <appender-ref ref="WebErrors" />
  </logger>

  <!-- Will log all FATALs from NHibernate, including NHibernate.SQL and all the nested -->
  <logger name="NHibernate" >
    <level value="FATAL" />
  </logger>

Дополнительно я бы порекомендовал прочитать руководство. В нем содержится много объяснений. Например, вы можете прочитать об Logger Hierarchy. Вот цитата оттуда:

Сказано, что лесозаготовитель был родоначальником другой регистратор, если за его именем следует точка - это префикс потомка. имя регистратора. Говорят, что лесозаготовитель родитель детского регистратора, если есть нет предков между собой и потомственный лесоруб. Иерархия работает точно так же, как пространство имён и иерархия классов в .NET.

а также:

Наследование уровня:. Наследуемый уровень для данного логгера X, равен первому. ненулевой уровень в лесозаготовителе иерархия, начиная с X и продвигаясь вверх по иерархии к корневому регистратору.

34
ответ дан 28 November 2019 в 23:45
поделиться

Ты не можешь сделать то, о чем просишь. Я имею в виду, что нужно просто установить уровень журнала по умолчанию на warning, а затем установить определенные логгеры в DEBUG.

Также, вы можете установить порог вашего приложения в DEBUG, а другой приложение установить WARN.

Например:

<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
    <applicationName value="Application" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
    <threshold value="WARN" />
</appender>

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender,log4net">
    <to value="asdf@example.com" />
    <from value="group@example.com" />
    <subject value="Notification" />
    <smtpHost value="server01" />
    <bufferSize value="1" />
    <lossy value="false" />
    <layout type="log4net.Layout.PatternLayout,log4net">
        <conversionPattern value="%property{log4net:HostName} :: %level :: %message %newlineLogger: %logger%newlineThread: %thread%newlineDate: %date%newlineNDC: %property{NDC}%newline%newline" />
    </layout>
    <threshold value="DEBUG" />
</appender>
4
ответ дан 28 November 2019 в 23:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: