プログラムで特定のログレベルを有効にする方法があるかどうか知っていますか?
通常のアプリケーションの使用中はエラー ログのみを有効にし、コマンド ライン引数をアプリケーションに渡すことで、必要に応じてより詳細なログを有効にしたいと考えています。
このように構成された基本的なロガーが与えられた場合
<targets>
<target xsi:type="File" name="payroll" fileName="c:\temp\payroll.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
</targets>
<rules>
<logger name="*" minlevel="Error" writeTo="payroll" />
</rules>
プログラムでログレベルに追加できます
static void Main(string[] args)
{
if (args.Contains("Info"))
{
var logger = NLog.LogManager.Configuration.LoggingRules.First(x => x.Targets.First().Name == "payroll");
logger.EnableLoggingForLevel(LogLevel.Info);
}
var proc = new PayrollProcessor();
proc.Process();
}