[英]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上没有相关的方法来获取等级。 是否可以在运行时获取日志级别?
启用的日志记录级别在日志记录规则中配置。
所以你可以这样做:
添加规则名称,以便您可以更轻松地找到规则:
<logger name="*" minLevel="${var:myFileLevel}" writeTo="file" ruleName="myrule" />
找到规则并检查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())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.