-
【.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(); |
|
} |
|
|
|
} |
本文作者: XKIND
本文链接:https://www.cnblogs.com/zhuzhongxing/p/14147091.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式