C# 日志三剑客之NLog最简上手范式

Visual Studio V2019

.NetFramework 4.5.2

NLog 5.4

以Winform工程为例,使用Nuget包管理工具给项目添加NLog V5.4日志组件,在Progam.cs入口Main中第一行加入:

            NLog.LogManager.Configuration = new NLog.Config.XmlLoggingConfiguration(".\\Config\\Test_NLOG.XML");
using语句也不需要

在窗体代码中加入如下代码:

        NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
 

        private void Form1_Load(object sender, EventArgs e)
        {
            logger.Debug("********");
            logger.Info("Form Loaded.");
            logger.Warn("********");
            logger.Error("********");
            logger.Trace("********");
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            logger.Info($"Form Closing...");
        }

logger.Error的调用在程序代码角度看,大多卸载try catch的异常代码段记录异常

try

{

}

catch (Exception ex)

{

        logger.Error("xxxx");

}

finally

{

}


在程序运行目录下新建Config子目录存储配置文件Test_NLOG.XML,其内容:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
    <targets>
        <!--将Debug导出为每小时一个-->
        <target name="debug"
                xsi:type="File"
                fileName="${basedir}/Logs/${date:format=yyyy}${date:format=MM}${date:format=dd}_Debug.log"
                layout="${date:format=yyyy-MM-dd HH\:mm\:ss} [${uppercase:${level}}] : ${message}${newline}" />
        <target name="info"
                xsi:type="File"
                fileName="${basedir}/Logs/${date:format=yyyy}${date:format=MM}${date:format=dd}_Info.log"
                layout="${date:format=yyyy-MM-dd HH\:mm\:ss} [${uppercase:${level}}] : ${message}${newline}" />
        <target name="warning"
                xsi:type="File"
                fileName="${basedir}/Logs/${date:format=yyyy}${date:format=MM}${date:format=dd}_Warning.log"
                layout="${date:format=yyyy-MM-dd HH\:mm\:ss} [${uppercase:${level}}] : ${message}${newline}" />
        <target name="trace"
                xsi:type="File"
                fileName="${basedir}/Logs/${date:format=yyyy}${date:format=MM}${date:format=dd}_Trace.log"
                layout="${date:format=yyyy-MM-dd HH\:mm\:ss} [${uppercase:${level}}] : ${message}${newline}" />
        <target name="fatal"
                xsi:type="File"
                fileName="${basedir}/Logs/${date:format=yyyy}${date:format=MM}${date:format=dd}_Fatal.log"
                layout="${date:format=yyyy-MM-dd HH\:mm\:ss} [${uppercase:${level}}] : ${message}${newline}" />
        <!--将Error导出为每天一个,而且存放在一个Error文件夹中-->
        <target name="error"
                xsi:type="File"
                fileName="${basedir}/Logs/${date:format=yyyy}${date:format=MM}${date:format=dd}_Error.log"
                layout="${date:format=yyyy-MM-dd HH\:mm\:ss} [${uppercase:${level}}] : ${message}${newline}" />
    </targets>


    <rules>
        <logger name="*"
                minlevel="Debug"
                maxlevel="Debug"
                writeTo="debug" />
        <logger name="*"
                minlevel="Info"
                maxlevel="Info"
                writeTo="info" />
        <logger name="*"
                minlevel="Warning"
                maxlevel="Warning"
                writeTo="warning" />
        <logger name="*"
                minlevel="Fatal"
                maxlevel="Fatal"
                writeTo="fatal" />
        <logger name="*"
                minlevel="Trace"
                writeTo="trace" />
        <logger name="*"
            minlevel="Error"
            maxlevel="Error"
            writeTo="error" />
    </rules>
</nlog>

日志存储的子目录Logs会由NLog组件自动创建。

运行程序,其中Trace日志20250313_Trace.log的内容:

2025-03-13 15:55:29 [DEBUG] : ********

2025-03-13 15:55:29 [INFO] : Form Loaded.

2025-03-13 15:55:29 [WARN] : ********

2025-03-13 15:55:29 [ERROR] : ********

2025-03-13 15:55:29 [TRACE] : ********

2025-03-13 16:06:17 [INFO] : Form Closing...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_16215957

如果有帮助一杯咖啡奶茶均可

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值