private static void EnableFileLogging(RoslynInsertionToolOptions options) { var logConfig = LogManager.Configuration; // regular file logging var fileTarget = new NLog.Targets.FileTarget("file") { FileName = options.LogFileLocation, Layout = logConfig.Variables["VerboseLayout"] }; logConfig.AddTarget(fileTarget); logConfig.AddRule(NLog.LogLevel.Trace, NLog.LogLevel.Fatal, fileTarget); // exception logging var exceptionFilter = new NLog.Filters.ConditionBasedFilter() { Condition = "length('${exception}') > 0", Action = NLog.Filters.FilterResult.Ignore }; var exceptionFileTarget = new NLog.Targets.FileTarget("fileAsException") { FileName = options.LogFileLocation, Layout = logConfig.Variables["ExceptionVerboselayout"] }; var rule = new NLog.Config.LoggingRule("*", NLog.LogLevel.Trace, exceptionFileTarget); rule.Filters.Add(exceptionFilter); logConfig.LoggingRules.Add(rule); logConfig.Reload(); }
/// <summary> /// To disable logger for other assemblies. /// </summary> /// <param name="cfg">Configuration of logger</param> /// <param name="filter">Custom filter</param> protected void fixLoggerCfg(LoggingConfiguration cfg, ConditionBasedFilter filter) { if(cfg == null) { return; } LoggingRule rule = cfg.LoggingRules.FirstOrDefault(p => p.LoggerNamePattern == "*"); if(rule == null) { return; } if(!rule.Filters.Contains(filter)) { rule.Filters.Add(filter); } }