gpt4 book ai didi

c# - NLog:如何以编程方式获取特定目标的级别

转载 作者:行者123 更新时间:2023-12-04 14:09:40 25 4
gpt4 key购买 nike

我目前使用 NLog 并允许管理员用户在运行时使用变量设置级别,如下所示:

<logger name="*" minLevel="${var:myFileLevel}" writeTo="file" />

我想知道这个记录器在运行时的级别(所以由于变量我无法从配置文件中获取它)

我可以很容易地获得目标如下:

Target target= LogManager.Configuration.FindTargetByName("file");

但遗憾的是目标对象上没有相关的方法来获取关卡。是否可以在运行时获取日志级别?

最佳答案

启用的日志记录级别在日志记录规则中配置。

所以你可以这样做:

  1. 添加一个规则名称,这样你就可以更容易地找到规则:

    <logger name="*" minLevel="${var:myFileLevel}" writeTo="file" ruleName="myrule" />
  2. 找到规则并检查 Levels 属性。参见 LoggingConfiguration.FindRuleByName Method

    var rule = LogManager.Configuration.FindRuleByName("myrule");
    var levels = rule.Levels; // enabled levels

对于这种情况,另一种选择是读取 myFileLevel 变量值。为此,您需要渲染它,您可以为此使用 LogEventInfo.CreateNullEvent()

var myFileLevelLayout = LoggingConfiguration.Variables["myFileLevel"]; // Type SimpleLayout
string value = myFileLevelLayout.Render(LogEventInfo.CreateNullEvent())

参见
LoggingConfiguration.Variables Property

关于c# - NLog:如何以编程方式获取特定目标的级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65393597/

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