该模块原先是根据NLog提供的方法,对不同级别的log分别对应方法。如下:
可是log级别那么多,如果一个一个写,岂不是要写很多方法,那么有没有一种动态识别的方式呢?上网查了一下,还真有:
public static void WriteLog(string message, LogLevel logLevel)
{
if (string.IsNullOrEmpty(message))
return;
var type = logger.GetType();
type.InvokeMember(logLevel.ToString(), BindingFlags.Default | BindingFlags.InvokeMethod, null, logger, new object[] { message });
}
public static void WriteLog(string message, Exception ex, LogLevel logLevel)
{
if (string.IsNullOrEmpty(message))
return;
var type = logger.GetType();
type.InvokeMember(logLevel.ToString(), BindingFlags.Default | BindingFlags.InvokeMethod, null, logger, new object[] { message,ex });
}
使用这两个方法,便可以动态的调用Nlog提供的方法啦。
测试:
暂且写一个简单的方法进行测试:
调试,调用,查看:
很明显此时会同时建立一个关于Info和debug的log日志信息。