Log4net创建自定义级别

JL.*_*JL. 11 logging log4net

我知道可以使用带有log4net INFO,WARN,ERROR和FATAL消息的内置级别

是否有可能创造新的?

Mat*_*ock 20

这可以使用此处概述的扩展方法完成:http: //rageshkrishna.com/2011/01/21/AddingCustomLogLevelsToLog4net.aspx

添加一些扩展方法使得开始使用新的日志级别变得非常简单:

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);
   }

}
Run Code Online (Sandbox Code Playgroud)

就是这样 - 现在我可以开始在任何ILog实例上使用我的新"Auth"日志记录级别,如下所示:

SecurityLogger.AuthFormat("User logged in with id {0} from IP address {1}", id, Request.UserHostAddress);
Run Code Online (Sandbox Code Playgroud)

  • 感谢您成为这个问题的唯一答案,而不仅仅是一个链接. (5认同)
  • 对于那些想了解级别的人,以下是log4net 2.07中级别的表述列表:关int.MaxValue,Log4Net_Debug 120000,紧急情况120000,致命110000,警报100000,严重90000,严重80000,错误70000,警告60000,通知50000,信息40000 ,Debug 30000,Fine 30000,Trace 20000,Finer 20000,Verbose 10000,Finest 10000 (2认同)

Wil*_*iam 1

它已经有好几年了,但这个帖子讨论了你想要做什么。

  • 链接已失效,但可在[互联网档案]上找到(https://web.archive.org/web/20130528024223/http://www.l4ndash.com/Log4NetMailArchive/tabid/70/forumid/1/postid/14714/view /主题/默认.aspx) (7认同)
  • 几年后……这两个链接都失效了。链接失效了! (3认同)