目录
一 上章回顾
二 实现NLogService服务
- 声明Nlog日志记录器
- 获取或创建Nlog单例服务对象,如果存在,提供当前对象,如果不存在,创建Nlog对象并保存
- 定义调试、信息、警告、追踪、错误、致命错误等记录日志方法
- 可以根据自身需要,重写记录日志方法,以实现结构化日志记录的目标,如Demo中,我重写了Error传入参数为LogInfo和userName+password的两个方法,这样在调用时传入相应参数,就可以实现结构化日志记录的目的。
using Model.DataModels;
using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Model.Service
{
public class NLogService
{
#region Nlog
/// <summary>
/// 声明NLog日志记录器
/// </summary>
private readonly NLog.Logger _logger = LogManager.GetCurrentClassLogger();
/// <summary>
/// nlog服务单例对象
/// </summary>
private static NLogService _obj;
/// <summary>
/// 获取或设置NLog服务单例对象
/// </summary>
public static NLogService _
{
get => _obj ??=new NLogService();
set => _obj = value;
}
#region Debug,调试
public void Debug(string msg)
{
_logger.Debug(msg);
}
public void Debug(string msg, Exception err)
{
_logger.Debug(err, msg);
}
#endregion
#region Info,信息
public void Info(string msg)
{
_logger.Info(msg);
}
public void Info(string msg, Exception err)
{
_logger.Info(err, msg);
}
#endregion
#region Warn,警告
public void Warn(string msg)
{
_logger.Warn(msg);
}
public void Warn(string msg, Exception err)
{
_logger.Warn(err, msg);
}
#endregion
#region Trace,追踪
public void Trace(string msg)
{
_logger.Trace(msg);
}
public void Trace(string msg, Exception err)
{
_logger.Trace(err, msg);
}
#endregion
#region Error,错误
public void Error(string msg)
{
_logger.Error(msg);
}
public void Error(string msg,LoginInfo loginInfo)
{
_logger.Error(msg,loginInfo);
}
public void Error(string msg,string userName,string password)
{
_logger.Error(msg,userName,password);
}
public void Error(string msg, Exception err)
{
_logger.Error(err, msg);
}
#endregion
#region Fatal,致命错误
public void Fatal(string msg)
{
_logger.Fatal(msg);
}
public void Fatal(string msg, Exception err)
{
_logger.Fatal(err, msg);
}
#endregion Fatal
#endregion Nlog
}
}
三 使用日志
- 首先,我们需要声明NLogService对象
- 依赖注入到主视图模型
- 初始化LogInfo对象
- 利用结构化记录日志的特性,将对象通过@解构记录在日志中
- 当使用@结构对象后,可通过其成员变量实现结构化记录日志
/// <summary>
/// Nlog依赖注入对象
/// </summary>
private readonly NLogService _nlog;
//依赖注入到主视图模型构造函数中
public MainViewModel(NLogService nlog)
{
_nlog = nlog;
LoginInfo loginInfo = new LoginInfo
{
UserName = "RaymondLeigh",
Password = "6688",
UserRole = "Admin"
};
_nlog.Error("这是Nlog的输出日志,欢迎{@logInfo}登录上线", loginInfo);
_nlog.Error("这是Nlog的输出日志,User Name is {UserName},password is {Password}", loginInfo.UserName, loginInfo.Password);
}
四 总结
本文完成了Prism+Nlog开发环节中实现NlogService服务、具体使用日志的介绍。
五 下章预告
下一章我会教大家Serilog环境配置。
博主RaymondLeigh:如果您觉得本文为您提供了结局思路或解决了您的实际问题,麻烦您🙏帮忙点赞、收藏、评论、关注一键四连,您的举手之劳将为我写作提供动力源泉!🤞
print('Hello,RaymondLeigh!') # 每日问候,跟大家问好!
🌞精品前端UI设计专栏:MaterialDesign专栏
💾精品后端数据库专栏:SqlServer专栏 EFCore专栏 Socket专栏 C#日志库专栏
💻精品程序开发专栏 VisualStudio专栏