log日志功能模块优化

该模块原先是根据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日志信息。

你可能感兴趣的:(log日志功能模块优化)