如何在运行时增加 NLog 日志级别
How to increase NLog log level at runtime
我的应用程序开头的log.Trace()
太多,导致程序运行不正常,所以不能用一般的NLog
配置来提高日志级别。
所以,我想在运行时提高日志级别。为此,我在互联网上找到了类似的东西:
foreach (var rule in LogManager.Configuration.LoggingRules)
{
// Iterate over all levels up to and including the target, (re)enabling them.
for (int i = 0; i <= 5; i++)
{
rule.EnableLoggingForLevel(LogLevel.FromOrdinal(i));
}
}
但是,这似乎不起作用,因为日志中没有显示以下行,尽管我确定该行已通过:
log.Trace("log trace works!");
有没有人知道一种方法来确保从我的源代码中的某个时刻,我可以看到 log.Trace()
结果?
供您参考:
log
定义为 private static readonly Logger log = LogManager.GetCurrentClassLogger();
.
- 我一直在寻找一个
nlog.*
文件,其中包含一个 <nlog>
标签,我没有找到任何东西。
编辑:
我正在使用 NLog
版本 4.5.4。
Edit2(尝试强制读取配置):
我修改了 nlog.config
文件如下:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true">
<variable name="myLevel" value="Trace" />
<rules>
<logger minLevel="${var:myLevel}" />
</rules>
...
然后我尝试强制重新读取那个配置,如下:
NLog.LogManager.Setup().LoadConfigurationFromFile("C:\...\NLog.config");
提前致谢
循环后调用 LogManager.ReconfigExistingLoggers()
似乎对我有用。
配置
<logger name="*" minlevel="Info" writeTo="console" />
代码
logger.Trace("Trace 1");
logger.Info("Info 1");
foreach (var rule in LogManager.Configuration.LoggingRules)
{
for (var i = 0; i <= 5; i++)
{
rule.EnableLoggingForLevel(LogLevel.FromOrdinal(i));
}
}
LogManager.ReconfigExistingLoggers();
logger.Trace("Trace 2"); // This is now printed.
logger.Info("Info 2");
我的应用程序开头的log.Trace()
太多,导致程序运行不正常,所以不能用一般的NLog
配置来提高日志级别。
所以,我想在运行时提高日志级别。为此,我在互联网上找到了类似的东西:
foreach (var rule in LogManager.Configuration.LoggingRules)
{
// Iterate over all levels up to and including the target, (re)enabling them.
for (int i = 0; i <= 5; i++)
{
rule.EnableLoggingForLevel(LogLevel.FromOrdinal(i));
}
}
但是,这似乎不起作用,因为日志中没有显示以下行,尽管我确定该行已通过:
log.Trace("log trace works!");
有没有人知道一种方法来确保从我的源代码中的某个时刻,我可以看到 log.Trace()
结果?
供您参考:
log
定义为private static readonly Logger log = LogManager.GetCurrentClassLogger();
.- 我一直在寻找一个
nlog.*
文件,其中包含一个<nlog>
标签,我没有找到任何东西。
编辑:
我正在使用 NLog
版本 4.5.4。
Edit2(尝试强制读取配置):
我修改了 nlog.config
文件如下:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true">
<variable name="myLevel" value="Trace" />
<rules>
<logger minLevel="${var:myLevel}" />
</rules>
...
然后我尝试强制重新读取那个配置,如下:
NLog.LogManager.Setup().LoadConfigurationFromFile("C:\...\NLog.config");
提前致谢
循环后调用 LogManager.ReconfigExistingLoggers()
似乎对我有用。
配置
<logger name="*" minlevel="Info" writeTo="console" />
代码
logger.Trace("Trace 1");
logger.Info("Info 1");
foreach (var rule in LogManager.Configuration.LoggingRules)
{
for (var i = 0; i <= 5; i++)
{
rule.EnableLoggingForLevel(LogLevel.FromOrdinal(i));
}
}
LogManager.ReconfigExistingLoggers();
logger.Trace("Trace 2"); // This is now printed.
logger.Info("Info 2");