• 【.NET / C#】NLogHelper


    public sealed class LogHelper
    {
        /// <summary>
        /// 输出 ERROR 日志
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="message">文本消息</param>
        public static void Error(Logger logger, string message, 
                [CallerMemberName] string memberName = "",
                [CallerFilePath] string sourceFilePath = "", 
                [CallerLineNumber] int sourceLineNumber = 0)
        {
            Log(logger, LogLevel.Error, message, memberName, sourceFilePath, sourceLineNumber);
        }
    
        /// <summary>
        /// 输出 ERROR 日志
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="message">异常消息</param>
        public static void Error(Logger logger, Exception throwable,
                [CallerMemberName] string memberName = "",
                [CallerFilePath] string sourceFilePath = "",
                [CallerLineNumber] int sourceLineNumber = 0)
        {
            Log(logger, LogLevel.Error, throwable, memberName, sourceFilePath, sourceLineNumber);
        }
    
        /// <summary>
        /// 输出 WARN 日志
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="message">文本消息</param>
        public static void Warn(Logger logger, string message,
                [CallerMemberName] string memberName = "",
                [CallerFilePath] string sourceFilePath = "",
                [CallerLineNumber] int sourceLineNumber = 0)
        {
            Log(logger, LogLevel.Warn, message, memberName, sourceFilePath, sourceLineNumber);
        }
    
        /// <summary>
        /// 输出 WARN 日志
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="message">异常消息</param>
        public static void Warn(Logger logger, Exception throwable,
                [CallerMemberName] string memberName = "",
                [CallerFilePath] string sourceFilePath = "",
                [CallerLineNumber] int sourceLineNumber = 0)
        {
            Log(logger, LogLevel.Warn, throwable, memberName, sourceFilePath, sourceLineNumber);
        }
    
        /// <summary>
        /// 输出 INFO 日志
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="message">文本消息</param>
        public static void Info(Logger logger, string message,
                [CallerMemberName] string memberName = "",
                [CallerFilePath] string sourceFilePath = "",
                [CallerLineNumber] int sourceLineNumber = 0)
        {
            Log(logger, LogLevel.Info, message, memberName, sourceFilePath, sourceLineNumber);
        }
    
        /// <summary>
        /// 输出 INFO 日志
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="message">异常消息</param>
        public static void Info(Logger logger, Exception throwable,
                [CallerMemberName] string memberName = "",
                [CallerFilePath] string sourceFilePath = "",
                [CallerLineNumber] int sourceLineNumber = 0)
        {
            Log(logger, LogLevel.Info, throwable, memberName, sourceFilePath, sourceLineNumber);
        }
    
        /// <summary>
        /// 输出 DEBUG 日志
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="message">文本消息</param>
        public static void Debug(Logger logger, string message,
                [CallerMemberName] string memberName = "",
                [CallerFilePath] string sourceFilePath = "",
                [CallerLineNumber] int sourceLineNumber = 0)
        {
            Log(logger, LogLevel.Debug, message, memberName, sourceFilePath, sourceLineNumber);
        }
    
        /// <summary>
        /// 输出 DEBUG 日志
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="message">异常消息</param>
        public static void Debug(Logger logger, Exception throwable,
                [CallerMemberName] string memberName = "",
                [CallerFilePath] string sourceFilePath = "",
                [CallerLineNumber] int sourceLineNumber = 0)
        {
            Log(logger, LogLevel.Debug, throwable, memberName, sourceFilePath, sourceLineNumber);
        }
    
        /// <summary>
        /// 输出 TRACE 日志
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="message">文本消息</param>
        public static void Trace(Logger logger, string message,
                [CallerMemberName] string memberName = "",
                [CallerFilePath] string sourceFilePath = "",
                [CallerLineNumber] int sourceLineNumber = 0)
        {
            Log(logger, LogLevel.Trace, message, memberName, sourceFilePath, sourceLineNumber);
        }
    
        /// <summary>
        /// 输出 TRACE 日志
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="message">异常消息</param>
        public static void Trace(Logger logger, Exception throwable,
                [CallerMemberName] string memberName = "",
                [CallerFilePath] string sourceFilePath = "",
                [CallerLineNumber] int sourceLineNumber = 0)
        {
            Log(logger, LogLevel.Trace, throwable, memberName, sourceFilePath, sourceLineNumber);
        }
    
        // --------------------------------------------------------------------------------------------
    
        /// <summary>
        /// 日志输出
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="level">日志级别</param>
        /// <param name="message">文本消息</param>
        /// <param name="memberName">方法名</param>
        /// <param name="sourceFilePath">文件</param>
        /// <param name="sourceLineNumber">行号</param>
        private static void Log(Logger logger, LogLevel level, string message, 
                 string memberName, string sourceFilePath, int sourceLineNumber)
        {
            if (logger.IsEnabled(level))
            {
                // logger.Log(level, "[SEGMENT4| {}] [SEGMENT5| _] [SEGMENT6| {}]", caller, message);
                var caller = GetCaller(memberName, sourceFilePath, sourceLineNumber);
                logger.Log(level, "[{0}] [_] [{1}]", caller, message);
            }
        }
    
        /// <summary>
        /// 日志输出
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="level">日志级别</param>
        /// <param name="throwable">异常消息</param>
        /// <param name="memberName">方法名</param>
        /// <param name="sourceFilePath">文件</param>
        /// <param name="sourceLineNumber">行号</param>
        private static void Log(Logger logger, LogLevel level, Exception throwable, 
                 string memberName, string sourceFilePath, int sourceLineNumber)
        {
            if (logger.IsEnabled(level))
            {
                // logger.Log(level, "[SEGMENT4| {}] [SEGMENT5| _] [SEGMENT6| {}]", caller, message);
                var caller = GetCaller(memberName, sourceFilePath, sourceLineNumber);
                var message = GetExceptionInfo(throwable);
                logger.Log(level, "[{0}] [_] [{1}]", caller, message);
            }
        }
    
        /// <summary>
        /// 获取调用者信息
        /// </summary>
        /// <param name="memberName">方法名</param>
        /// <param name="sourceFilePath">文件</param>
        /// <param name="sourceLineNumber">行号</param>
        /// <returns></returns>
        private static string GetCaller(string memberName, string sourceFilePath, int sourceLineNumber)
        {
            var source = string.IsNullOrEmpty(sourceFilePath) 
                       ? string.Empty 
                       : sourceFilePath.Substring(sourceFilePath.LastIndexOf('\') + 1);
            return $"{memberName ?? string.Empty}({source}:{sourceLineNumber})";
        }
    
        /// <summary>
        /// 获取详细的异常描述
        /// </summary>
        /// <param name="ex">Exception</param>
        /// <returns></returns>
        private static string GetExceptionInfo(Exception ex)
        {
            if (ex == null) return string.Empty;
            var message = new StringBuilder(ex.Message);
            while (ex.InnerException != null)
            {
                ex = ex.InnerException;
                message.AppendFormat(" => {0}", ex.ToString());
            }
            return message.ToString();
        }
    
    }
    
  • 相关阅读:
    Delphi程序设计之惯用法
    有关ADO专题
    钓子程序代源
    delphi函数大集合
    2012暑期川西旅游之第四天(丹巴甲居藏寨小金达维日隆)
    主流F2.8标准变焦镜头信息
    2012暑期川西旅游之第一天(成都海螺沟)
    2012暑期川西旅游之第五天(四姑娘山之双桥沟)
    宾得最小饼干DA 40mm F2.8 Limited[转]
    主流F2.8标准变焦镜头信息
  • 原文地址:https://www.cnblogs.com/zhuzhongxing/p/14147091.html
Copyright © 2020-2023  润新知