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

news2024/11/25 14:55:45

目录

一、背景

二、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");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1522966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实现兼容性良好的前端页面开发

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【LLM加速】注意力优化(基于位置/内容的稀疏注意力 | flashattention)

note &#xff08;1&#xff09;近似注意力&#xff1a; Routing Transformer采用K-means 聚类方法&#xff0c;针对Query和Key进行聚类&#xff0c;类中心向量集合为 { μ i } i 1 k \left\{\boldsymbol{\mu}_i\right\}_{i1}^k {μi​}i1k​ &#xff0c;其中k 是类中心的…

源于一区| 改善性能的5种高效而小众的变异策略,一键调用 (Matlab)

基于群体的优化算法在达到迭代后期时种群多样性往往会速降&#xff0c;进化将陷入停滞&#xff0c;而许多算法本身并没有突变机制&#xff0c;一旦受到局部最优值的约束&#xff0c;就很难摆脱这些约束。它还将减少种群多样性&#xff0c;减缓收敛速度。 变异策略可以增加种群…

2025武忠祥考研数学,视频百度网盘+基础全程课程PDF

“得数学者的天下”&#xff0c;25考研首先要开始的就是数学复习&#xff0c;而数学复习首先要开始的必然是高数&#xff01; 很多同学选择了跟着武忠祥老师学习高数&#xff0c;但是具体要怎么学&#xff1f;用什么书&#xff1f;怎么刷题&#xff1f;快来看看以 下的武忠祥…

GenAI开源公司汇总

主要分类如下&#xff1a; 1. 基础模型&#xff1a;这些是机器学习和AI的核心模型提供商&#xff0c;它们提供基础的算法和技术支持。 2. 模型部署与推断&#xff1a;提供云服务和计算资源&#xff0c;帮助用户部署和运行AI模型。 3. 开发者工具&#xff1a;支持AI/ML的开发…

【01】htmlcssgit

01-前端干货-html&css 防脱发神器 一图胜千言 使用border-box控制尺寸更加直观,因此,很多网站都会加入下面的代码 * {margin: 0;padding: 0;box-sizing: border-box; }颜色的 alpha 通道 颜色的 alpha 通道标识了色彩的透明度,它是一个 0~1 之间的取值,0 标识完全…

开发指南013-国际化-后台部分

平台底层做了国际化处理。开发时候根据项目性质&#xff0c;决定是否采用国际化&#xff0c;但是底层所需资源必须包含&#xff08;一些底层例如登录校验都做了对应处理&#xff09;。平台先支持中文简体、中文繁体、英文、日文&#xff0c;必要时可以随时扩展其他语言。 国际化…

单片机FLASH深度解析和编程实践(上)

本篇文章主要针对单片机FLASH编程和FLASH基本原理进行学习分享。以STM32单片机作为实例进行编程实训。 关于FLASH操作的相关寄存器及编程&#xff0c;大家可以参考下一篇文章: 单片机FLASH深度解析和编程实践&#xff08;下&#xff09;-CSDN博客 目录 一、STM32编程方式 二、…

Linux批量注释

1.注释行 1.按ctrlv进入块选择模式 &#xff0c;然后上下键选中需要注释的行 2.按shifti(也就是大写I) 然后输入// 或 # 3.按ESC键 2.取消注释行 1.按ctrlv进入块选择模式&#xff0c; 然后上下键选中需要取消注释的行 2.然后按d

QT C++ QButtonGroup应用

//QT 中&#xff0c;按钮数量比较少&#xff0c;可以分别用各按钮的信号和槽处理。 //当按钮数量较多时&#xff0c;用QButtonGroup可以实现共用一个槽函数&#xff0c;批量处理&#xff0c;减少垃圾代码&#xff0c; //减少出错。 //开发平台&#xff1a;win10QT6.2.4 MSVC…

面向控制台编程?Java的GUI开发

记得之前刚开始学习Java&#xff0c;按部就班去阅读《Java核心技术》这本书的时候&#xff0c;总是听别人提起&#xff0c;java swing那一章不用看了。然后直到对着控制台编程了半年&#xff0c;回来捡起了Swing图形界面&#xff0c;跟着网上搞了坦克大战的游戏&#xff0c;总觉…

【蓝桥杯选拔赛真题38】C++判断数字 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解析

目录 C判断数字 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、推荐资料 C判断数字 第十四届蓝桥杯青少年创意编程大赛C选拔赛真题 一、题目要求 1、编程实现 给定一个正整数N(100≤N<100000)…

从零开始搭建游戏服务器 第二节 Actor模型与应用

目录 复习本节内容正文什么是Actor模型如何应用创建Actor基类创建RootActor创建AkkaContext创建ConnectActorManager和ConnectActor生成actor并发送消息给它 课后作业结尾 复习 上一节我们使用gradle构建了一个多模块系统。 并且在登录服启动了Netty服务&#xff0c;监听confi…

字符串的模式匹配算法

一、朴素模式匹配算法 二、KMP算法 三、KMP求Next数组 四、KMP求NextVal数组

Nacos与Eureka的使用与区别

Nacos与Eureka的使用与区别 单体架构&#xff1a;优点缺点 分布式架构需要考虑的问题&#xff1a;微服务企业需求 认识SpringCloud服务的拆分与远程调用微服务调用方式 Eureka提供者和消费者架构搭建Eureka服务注册服务发现 Ribbon负载均衡饥饿加载总结 Nacos注册中心Nacos安装…

Task-balanced distillation for object detection用于

Task-balanced distillation for object detection用于目标检测的任务平衡蒸馏 摘要 主流的目标检测器通常由分类和回归两个子任务组成&#xff0c;由两个并行头部实现。这种经典的设计范式不可避免的导致分类得分和定位质量&#xff08;IOU&#xff09;之间的空间分布不一致…

鸿蒙开发实现弹幕功能

鸿蒙开发实现弹幕功能如下&#xff1a; 弹幕轮播组件&#xff1a;BannerScroll import type { IDanMuInfoList, IDanMuInfoItem } from ../model/DanMuData //定义组件 Component export default struct BannerScroll {//Watch 用来监视状态数据的变化&#xff0c;包括&#…

软考79-上午题-【面向对象技术3-设计模式】-结构型设计模式02

一、组合模式 1-1、意图 将对象组合成树型结构&#xff0c;以表示"部分-整体"的层次结构。Composite使得用户对单个对象和组 合对象的使用具有一致性。 示例&#xff1a;对象&#xff1a;文件、文件夹 1-2、结构 Component 为组合中的对象声明接口&#xff1b;在适…

CKA认证之Etcd备份与恢复

题目介绍&#xff1a; 资料参考&#xff1a; https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/configure-upgrade-etcd 解题&#xff1a; 1、备份 #参考模板列出 etcdctl 可用的各种选项。 #例如&#xff0c;你可以通过指定端点、证书和密钥来制作快照&#xff0…

Android 开发 地图 polygon 显示信息

问题 Android 开发 地图 polygon 显示信息 详细问题 笔者进行Android项目开发&#xff0c;接入高德地图绘制区域后&#xff0c;需要在指定区域&#xff08;位置&#xff09;内显示文本信息&#xff0c;如何实现 实现效果 解决方案 代码 import com.amap.api.maps.model.T…