Вопрос по log4net, logging – Log4net создание пользовательских уровней

10

Я знаю, что можно использовать встроенные уровни с log4net Сообщения INFO, WARN, ERROR и FATAL

Можно ли создавать новые?

Ваш Ответ

4   ответа
0

Сейчас довольно много лет, ноэтот Тема обсуждает, что вы хотите сделать.

И спустя несколько лет ... обе ссылки мертвы. Уя за ссылку гниль!
Ссылка неактивна, но доступна наthe internet archive
0

Я стою исправлено. Это возможно и в log4j - я просто никогда этого не делал:

https://logging.apache.org/log4j/1.2/faq.html#custom-level

Я не знал бы, если бы я не видел ответ Уильяма и проверил еще раз.

16

Это можно сделать с помощью метода расширения, описанного здесь: http://rageshkrishna.com/2011/01/21/AddingCustomLogLevelsToLog4net.aspx

Adding some extension methods makes it dead simple to start using the new log levels:

public static class SecurityExtensions
{
   static readonly log4net.Core.Level authLevel = new log4net.Core.Level(50000, "Auth");

   public static void Auth(this ILog log, string message)
   {
      log.Logger.Log(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType,
          authLevel, message, null);
   }

   public static void AuthFormat(this ILog log, string message, params object[] args)
   {
      string formattedMessage = string.Format(message, args);
      log.Logger.Log(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType,
          authLevel, formattedMessage, null);
   }

}

And that’s it – now I can start using my new “Auth” logging level on any instance of ILog like this:

SecurityLogger.AuthFormat("User logged in with id {0} from IP address {1}", id, Request.UserHostAddress);
Спасибо за то, что вы являетесь единственным ответом на этот вопрос, который не является просто ссылкой.
Для тех, кто интересуется уровнями, вот перефразированный список уровней из log4net 2.07: Выкл. Int.MaxValue, Log4Net_Debug 120000, Emergency 120000, Fatal 110000, Alert 100000, Critical 90000, Тяжелый 80000, Ошибка 70000, Warn 60000, Уведомление 50000, Info 40000 , Debug 30000, Fine 30000, Trace 20000, Finer 20000, Verbose 10000, Finest 10000
1

Я использую это для реализации уровней Verbose и / или Trace:

Log4net, как логировать подробное сообщение?

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