是否可以从数据库中读取NLog .NET配置?我的需要是迅速改变目标规则的严重性,所以我想知道是否有办法做到这一点。例如,如果在配置文件中有这样的内容:
<rules>
<logger name="*" minlevel="Warning" writeTo="LogToDB" />
<logger name="*" minlevel="Info" writeTo="LogToConsole" />
</rules>
我希望能够快速更改minlevel=">value">值(即从数据库配置表),而不部署应用程序配置文件。
谢谢你。
您可以在运行时使用NLog
提供的APIs
重新配置日志记录。使用下面的函数重新配置日志记录-
public void ReconfigureLoggingLevel()
{
foreach (var rule in NLog.LogManager.Configuration.LoggingRules)
{
var logLevel = GetLogLevelFromDatabase(); // your logic to fetch log level
rule.EnableLoggingForLevel(NLog.LogLevel.FromString(logLevel));
}
NLog.LogManager.ReconfigExistingLoggers();
}
你也可以这样做:
<variable name="MinLevelDB" value="Warning" />
<variable name="MinLevelConsole" value="Info" />
<rules>
<logger name="*" minlevel="${var:MinLevelDB}" writeTo="LogToDB" />
<logger name="*" minlevel="${var:MinLevelConsole}" writeTo="LogToConsole" />
</rules>
然后你可以这样做:
LogManager.Configuration.Variables["MinLevelDB"] = "Debug";
LogManager.ReconfigExistingLoggers();
参见:https://github.com/NLog/NLog/wiki/Filtering-log-messages#semi-dynamic-routing-rules
参见:https://github.com/NLog/NLog/wiki/Environment-specific-NLog-Logging-Configuration