Могу ли я подключиться к журналу log4net, отладке, информации и ошибкам? - PullRequest
0 голосов
/ 15 декабря 2011

Я хочу установить разные цвета консоли в зависимости от серьезности зарегистрированного сообщения.

Я бы хотел, чтобы что-то вроде

_log.Error("Expected exception",e);

каким-то образом выполняло

Console.PushColor(ConsoleColor.DarkRed);
_log.Error("Expected exception",e);
Console.PopColor();

Есть ли простой способ подключить консольный логгер к таким вещам?

1 Ответ

3 голосов
/ 15 декабря 2011

Во-первых, да, log4Net предоставляет свой собственный адаптер цветового журнала:

Мы используем две конфигурации приложения для включения вывода как в std: out, так и в std: err

<log4net  xsi:noNamespaceSchemaLocation="http://csharptest.net/downloads/schema/log4net.xsd"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <root>
    <level value="ALL" />
    <appender-ref ref="console.out" />
    <appender-ref ref="console.error" />
  </root>

  <appender name="console.out" type="log4net.Appender.ColoredConsoleAppender">
    <target value="Console.Out" />
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="DEBUG"/><!-- "DEBUG" OR "INFO" if you want to display these -->
      <levelMax value="INFO"/>
    </filter>
    <mapping>
      <level value="INFO"/>
      <foreColor value="White, HighIntensity"/>
    </mapping>
    <mapping>
      <level value="DEBUG"/>
      <foreColor value="White"/>
    </mapping>
  </appender>

  <appender name="console.error" type="log4net.Appender.ColoredConsoleAppender">
    <target value="Console.Error" />
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="WARN"/>
      <levelMax value="FATAL"/>
    </filter>
    <mapping>
      <level value="FATAL"/>
      <foreColor value="Yellow, HighIntensity"/>
      <backColor value="Red"/>
    </mapping>
    <mapping>
      <level value="ERROR"/>
      <foreColor value="Red, HighIntensity"/>
    </mapping>
    <mapping>
      <level value="WARN"/>
      <foreColor value="Yellow, HighIntensity"/>
    </mapping>
  </appender>

</log4net>

Если вы все еще хотитечтобы вручную закодировать вывод, используйте реализацию ILog .Это в основном дает вам методы для каждого типа вывода.Чтобы связать свой пользовательский адаптер, вы создаете раздел конфигурации следующим образом ...

<appender name="name" type="NameSpace.ClassOfTypeILog, AssemblyName">
    ...
</appender>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...