ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – 在运行时使NLog配置文件用户定义

2019-06-24 18:54:08  阅读:250  来源: 互联网

标签:c nlog logging


我有一个winForm应用程序.我正在使用NLog进行日志记录.我的配置文件如下.我可以在运行时用户定义此配置文件中的任何参数.例如,对于archiveAboveSize =“4000”,我可以在winform中进行数值减少,可以从用户输入此值(这样4000可以是3000或5000)然后相应地在配置文件中设置此值吗?

<?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>
    <target xsi:type="File"
      name="file"
      layout="${longdate}|${level:uppercase=true}|${logger}|${message}"
      archiveAboveSize="4000"
      maxArchiveFiles="1"
      archiveFileName="${basedir}/log_archived.txt"
      fileName="log.txt" />
  </targets>

  <rules>
    <logger name="*" minlevel="Info" writeTo="file" />
  </rules>
</nlog>

解决方法:

您可以从NLog配置中按名称获取目标,并在运行时更改设置:

var target = (FileTarget)LogManager.Configuration.FindTargetByName("file");
if (target != null)
    target.ArchiveAboveSize = 3000;

遗憾的是,您无法以这种方式更新NLog配置文件 – 您应该手动执行此操作.您可以使用LINQ:

var nlogConfigFile = "NLog.config";
var xdoc = XDocument.Load(nlogConfigFile);
var ns = xdoc.Root.GetDefaultNamespace();
var fileTarget = xdoc.Descendants(ns + "target")
         .FirstOrDefault(t => (string)t.Attribute("name") == "file");
fileTarget.Attribute("archiveAboveSize").SetValue(3000);
xdoc.Save(nlogConfigFile);

标签:c,nlog,logging
来源: https://codeday.me/bug/20190624/1281220.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有