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?
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);
It's quite a few years old now, but this thread discusses what you are looking to do.
I'm using this to implement Verbose and/or Trace levels:
I stand corrected. It's possible in log4j as well - I've just never done it:
https://logging.apache.org/log4j/1.2/faq.html#custom-level
I would not have known unless I'd seen William's response and checked again.