我正試圖添加一個函式,允許用戶改變日志級別。我在.NET 4.5.2上運行NLog 4.7.11。首先,這是我的nlog配置:
<?xml version="1.0"/span> encoding="utf-8"/span>?
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"/span>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?
internalLogFile="E。
log-internal.txt">。
<extensions>
<add assembly="NLog.Windows.Forms"/>
</extensions>
<target>
<target name="logfile" xsi:type="File" fileName="program.log" layout="${longdate}. | ${level:uppercase=true} | ${message} | ${exception}" />
<target name="logconsole" xsi:type="Console" />
<目標xsi:type="RichTextBox"
name="logwindow"/span>
layout="${longdate}"。| ${level:uppercase=true} | ${message} | ${exception}"
autoScroll="true"。
maxLines="500"
controlName="logTextBox"/span>
formName="LogWindow"/span>
useDefaultRowColoringRules="true"。
allowAccessoryFormCreation="false"
messageRetention="All"
supportLinks="false">
</target>
</targets>
<規則>
<logger name="*" minlevel="Warn" writeTo="logconsole" />
<logger name="*" minlevel="Warn" writeTo="logwindow" />
<logger name="*" minlevel="Debug" writeTo="logfile" />
</rules>
</nlog>
我認為SetLoggingLevels方法會使這項任務相當容易:
private void logLevelMenuStripItem_Click(object sender。EventArgs e)。
{
logLevelTraceMenuStripItem.Checked = false。
logLevelInfoMenuStripItem.Checked = false;
logLevelDebugMenuStripItem.Checked = false;
logLevelWarnMenuStripItem.Checked = false;
logLevelErrorMenuStripItem.Checked = false;
ToolStripMenuItem source = sender as ToolStripMenuItem;
source.Checked = true;
LogLevel newLevel = LogLevel.FromString(source.Text);
foreach (NLog.Config.LoggingRule rule in LogManager.Configuration.LoggingRules)
{
rule.SetLoggingLevels(newLevel, LogLevel.Fatal)。
}
}
無論我用這個設定哪個值,我的nlog.config中的規則都被遵循。是否有一個我需要的設定,以允許程式化的重新配置或其他我沒有考慮到的東西,或者我遇到了一個錯誤?
uj5u.com熱心網友回復:
當改變配置時,你需要將其應用于通知NLog。
例如:
var config = LogManager.Config;
foreach (NLog.Config.LoggingRule rule in config.LoggingRules)
{
rule.SetLoggingLevels(newLevel, LogLevel.Fatal)。
}
// Apply
LogManager.Configuration = config;
參見https://github.com/NLog/NLog/wiki/Configure-from-code
有任何更好的方式(閱讀更多的執行緒安全)來改變運行時的配置。參見https://github.com/NLog/NLog/wiki/Configure-from-code#update-config-in-code
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/306663.html
標籤:
