gpt4 book ai didi

.net - NLog 配置 API : Using Layouts stored in variables

转载 作者:行者123 更新时间:2023-12-01 02:47:28 26 4
gpt4 key购买 nike

我的应用程序会为应用程序本身创建一个日志,以便记录它何时被激活,以及在应用程序级别发生了什么。

应用程序以“配置文件”为中心 - 用户加载一个配置文件,该配置文件告诉应用程序在哪里/何时/什么/如何。所以我还想为每个配置文件创建一个日志,以记录每次配置文件运行时的进度。

到目前为止没有问题...除了我希望将配置文件日志与配置文件本身一起存储,因此这意味着我需要动态配置 NLog,以便在运行时告诉它 fileTarget 路径。

但是,我也想将我想要使用的标准布局存储为 NLog.config 中的变量;从我所读到的内容来看,这似乎是一种足够普遍的方法。

但是,在下面一行

fileTarget.Layout = "${myLayout}"

...我得到一个 ArgumentException:

LayoutRenderer cannot be found: 'myLayout'

目前,我的布局变量很简单:

<variable name="myLayout" value="${message}" />

是不是不能通过API使用变量来指定布局?如果是这样的话,我会感到惊讶。还是我哪里出错了?

解决方案很简单——我可以使用手动指定的布局填充 fileTarget.Layout,但是,我很想知道 A 计划是否可行。

最佳答案

我获得了最新的源代码 (NLog 3.2.0.0) 并想出了一个无需对 NLog 进行任何更改即可支持的解决方案。下面的代码获取变量的值。我认为它也可以被写入,但我没有尝试过,因为我不需要那个功能。这就回答了这个问题。最后一行计算变量中的文本以呈现它包含的任何布局渲染器。

var config = (NLog.Config.XmlLoggingConfiguration)LogManager.Configuration;
string dir = config.Variables["logDirectory"];
dir = NLog.Layouts.SimpleLayout.Evaluate(dir);

关于.net - NLog 配置 API : Using Layouts stored in variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9635616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com