C#日志库八(NLog实战)

目录

一 上章回顾

二 实现NLogService服务

三 使用日志

四 总结

五 下章预告


一 上章回顾

一 上章回顾

二 需求分析

三 方案设计

1.设计实现方案

2 问题分析

3 替代方案

四 环境配置

1 依赖配置

2 配置log4net.config

3 输出源参数

4 根目录参数

五 总结

七 下章预告


二 实现NLogService服务

  1. 声明Nlog日志记录器
  2. 获取或创建Nlog单例服务对象,如果存在,提供当前对象,如果不存在,创建Nlog对象并保存
  3. 定义调试、信息、警告、追踪、错误、致命错误等记录日志方法
  4. 可以根据自身需要,重写记录日志方法,以实现结构化日志记录的目标,如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

    }
}

使用日志

  1. 首先,我们需要声明NLogService对象
  2. 依赖注入到主视图模型
  3. 初始化LogInfo对象
  4. 利用结构化记录日志的特性,将对象通过@解构记录在日志中
  5. 当使用@结构对象后,可通过其成员变量实现结构化记录日志
/// <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!')  # 每日问候,跟大家问好!

🔥精品框架专栏:Prism专栏 WPF专栏 


🌞精品前端UI设计专栏:MaterialDesign专栏


💾精品后端数据库专栏:SqlServer专栏 EFCore专栏 Socket专栏 C#日志库专栏


💻精品程序开发专栏  VisualStudio专栏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值