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();
    }
Пример #2
0
        /// <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);
            }
        }