繁体   English   中英

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

[英]NLog: how to obtain level of a specific target programatically

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

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

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

我能够轻松获得目标,如下所示:

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

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

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

所以你可以这样做:

  1. 添加规则名称,以便您可以更轻松地找到规则:

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

    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 属性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM