修改NLog配置文件参数的方法

目录

一、背景

二、NLog配置文件

 三、C#代码

四、验证结果

​ 五、总结


一、背景

最近项目中要用到NLog记录日志,有一个要求是可以灵活地修改日志文件的存放位置,琢磨了一小会,发现可以使用XML文件的形式修改文件的参数,现将方法逐一讲解。

二、NLog配置文件

NLog配置文件(即名为NLog.config的文件)的内容如下面所示,要将日志文件的存放位置由D:/Data/logs/All/改为E:/Data/logs/All,对应变量的名称是logDirectory。(代码直接复制下来就可以用)

<?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"
      autoReload="true" throwExceptions="false" internalLogLevel="Off">
  <!--定义变量logDirectory,变量的值可以通过${varname}语法插入到属性值中。一个变量值甚至可以用来定义另一个变量的值。-->
  <variable name="logDirectory" value="D:/Data/logs/All/"/>

  <!--定义日志目标/输出-->
	<targets async="true"  keepFileOpen="false">
		<!-- to limit per file max size: archiveAboveSize="5000000"-->
		<default-target-parameters xsi:type="File" layout="${longdate}|${level:uppercase=true}|${logger}|${threadid}|${message}|${exception:format=tostring}" encoding="utf-8" />
		<!--name表示目标的名称,xsi:type表示日志的输出类型,fileName表示日志文件的路径-->
    <target name="MinTarget" xsi:type="File" fileName="${logDirectory}/${date:format=yyyyMMdd}.txt" />
	</targets>

	<rules>
    <!--*表示所有日志记录器,minlevel表示输出日志的最低级别,maxlevel表示输出日志的最大级别,writeTo表示输出日志到指定的目标-->
		<logger name="*" minlevel="Debug" maxlevel="Fatal" writeTo="MinTarget" />
	</rules>
</nlog>

 三、C#代码

关键代码如下面所示,先将NLog配置文件当作XML文件加载进来,然后修改日志文件的存放位置,之后保存配置文件,最后生效NLog的配置参数。(代码直接复制下来就可以用)

            Logger logger=LogManager.GetCurrentClassLogger();
            logger.Info("未修改日志文件路径前");
            //NLog配置文件
            string fileName = "NLog.config";
            XmlDocument document = new XmlDocument();
            document.Load(fileName);
            XmlNamespaceManager nsmgr = new XmlNamespaceManager(document.NameTable);
            //给命名空间定义别名
            nsmgr.AddNamespace("n", "http://www.nlog-project.org/schemas/NLog.xsd");
            //使用XPath语法查找指定元素
            XmlNode node = document.SelectSingleNode("//n:variable[@name='logDirectory']", nsmgr);
            //修改日志文件的存放位置
            node.Attributes["value"].Value = @"E:/Data/logs/All";
            //保存xml文档
            document.Save(fileName);
            //生效Nlog配置参数
            LogManager.Configuration = new XmlLoggingConfiguration("NLog.config");
            //记录日志
            logger.Debug("This is a debug message.");
            logger.Info("This is an info message.");
            logger.Warn("This is a warning message.");
            logger.Error("This is an error message.");

四、验证结果

未修改日志存放位置前,日志往往会保存到D:/Data/logs/All/这个目录下,验证OK。

修改日志存放位置后,日志即刻保存到 E:/Data/logs/All这个目录下,验证OK。

 五、总结

通过XML文件的形式可以修改配置文件的参数,文件内的其他参数都可以使用这种方法进行修改,配置文件修改完成后将文件保存并更新配置才能生效。

            //保存xml文档
            document.Save(fileName);
            //生效Nlog配置参数
            LogManager.Configuration = new XmlLoggingConfiguration("NLog.config");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值