Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

logging - Log4net creating custom levels

I know its possible to use the built in levels with log4net INFO, WARN, ERROR and FATAL messages

Is it possible to create new ones?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

This can be done with an extension method as outlined here: 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);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...