zoukankan      html  css  js  c++  java
  • 【.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();
        }
    
    }
    
  • 相关阅读:
    技术每天一点点--2020.01-2020.12月
    【置顶】历史书单--程序员的文娱情怀
    【编程书籍 大系】 计算机开放电子书汇总
    Mysql基础代码(不断完善中)
    php 基础代码大全(不断完善中)
    【读书笔记】阅读美团技术团队文章《领域驱动设计在互联网业务开发中的实践》--2020.06.25 周四 端午节
    【置顶】技术每天一点点--2020.01-2020.12
    【日常】技术每天进展--2019.06.10
    【转载】Spring学习(1)——快速入门--2019.05.19
    vs创建qt dll,并使用qt控制台测试
  • 原文地址:https://www.cnblogs.com/zhuzhongxing/p/14147091.html
Copyright © 2011-2022 走看看