下面是我的配置文件和代码,总觉得还有可复用的写法,请大家指点!
StackFrame sf = new StackFrame(1);
msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
上面两句是用来获取调用者的信息,就是由哪个类的哪个方法发起的调用。
如果LogDemo工程下,Program类中的Main方法调用了Log.cs中的Error方法,则msg=LogDemo.Program.Main。
log4net.config
这个配置文件中有多线程并发的配置,有自定义日志名称配置,同时也有自定义目录配置
请注意配置文件中的datePattern节点的配置格式,根据此配置可以按天,半天,小时,分钟等生成单个日志文件。同时也可以按日期(或者月份生成文件夹)
Log.cs
public class Log
{
private static ILog _logdebug = LogManager.GetLogger("logdebug");
private static ILog _loginfo = LogManager.GetLogger("loginfo");
private static ILog _logwarn = LogManager.GetLogger("logwarn");
private static ILog _logerror = LogManager.GetLogger("logerror");
private static ILog _logfatal = LogManager.GetLogger("logfatal");
public static void Debug(string msg)
{
StackFrame sf = new StackFrame(1);
msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
_logdebug.Debug(msg);
}
public static void Debug(string msg, Exception e)
{
StackFrame sf = new StackFrame(1);
msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
_logdebug.Debug(msg, e);
}
public static void Info(string msg)
{
StackFrame sf = new StackFrame(1);
msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
_loginfo.Info(msg);
}
public static void Info(string msg, Exception e)
{
StackFrame sf = new StackFrame(1);
msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
_loginfo.Info(msg, e);
}
public static void Warn(string msg)
{
StackFrame sf = new StackFrame(1);
msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
_logwarn.Warn(msg);
}
public static void Warn(string msg, Exception e)
{
StackFrame sf = new StackFrame(1);
msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
_logwarn.Warn(msg, e);
}
public static void Error(string msg)
{
StackFrame sf = new StackFrame(1);
msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
_logerror.Error(msg);
}
public static void Error(string msg, Exception e)
{
StackFrame sf = new StackFrame(1);
msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
_logerror.Error(msg, e);
}
public static void Fatal(string msg)
{
StackFrame sf = new StackFrame(1);
msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
_logfatal.Fatal(msg);
}
public static void Fatal(string msg, Exception e)
{
StackFrame sf = new StackFrame(1);
msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
_logfatal.Fatal(msg, e);
}
}