Example #1
0
        private static IAppender _ColoredConsoleAppender()
        {
            var appender = new ManagedColoredConsoleAppender();

            appender.Name      = "Console Appender";
            appender.Layout    = layout;
            appender.Threshold = verbose ? Level.Verbose : Level.Info;
            appender.AddMapping(new ManagedColoredConsoleAppender.LevelColors {
                Level = Level.Info, ForeColor = ConsoleColor.Cyan
            });
            appender.AddMapping(new ManagedColoredConsoleAppender.LevelColors {
                Level = Level.Verbose, ForeColor = ConsoleColor.Gray
            });
            appender.AddMapping(new ManagedColoredConsoleAppender.LevelColors {
                Level = Level.Debug, ForeColor = ConsoleColor.White
            });
            appender.AddMapping(new ManagedColoredConsoleAppender.LevelColors {
                Level = Level.Warn, ForeColor = ConsoleColor.Yellow
            });
            appender.AddMapping(new ManagedColoredConsoleAppender.LevelColors {
                Level = Level.Error, ForeColor = ConsoleColor.Red
            });
            appender.AddMapping(new ManagedColoredConsoleAppender.LevelColors {
                Level = Level.Critical, ForeColor = ConsoleColor.Red
            });
            appender.ActivateOptions();
            return(appender);
        }
Example #2
0
        private static ManagedColoredConsoleAppender ConfigureLogging()
        {
            var appender = new ManagedColoredConsoleAppender
            {
                Threshold = Level.All,
                Layout    = new PatternLayout("%message%newline")
            };

            appender.AddMapping(
                new ManagedColoredConsoleAppender.LevelColors {
                Level = Level.Info, ForeColor = ConsoleColor.Gray
            });
            appender.AddMapping(
                new ManagedColoredConsoleAppender.LevelColors {
                Level = Level.Debug, ForeColor = ConsoleColor.DarkCyan
            });
            appender.AddMapping(
                new ManagedColoredConsoleAppender.LevelColors {
                Level = Level.Warn, ForeColor = ConsoleColor.Yellow
            });
            appender.AddMapping(
                new ManagedColoredConsoleAppender.LevelColors {
                Level = Level.Error, ForeColor = ConsoleColor.Red
            });
            appender.ActivateOptions();
            BasicConfigurator.Configure(appender);
            return(appender);
        }
Example #3
0
        public static void SetupLogging()
        {
            var hierarchy = (log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository();

            var patternLayout = new PatternLayout();

            patternLayout.ConversionPattern = "[%05thread] %-5level %20logger - %message%newline";
            patternLayout.ActivateOptions();

            var console = new ManagedColoredConsoleAppender();
            var TRACE   = new ManagedColoredConsoleAppender.LevelColors(); TRACE.Level = Level.Trace; TRACE.ForeColor = ConsoleColor.White;
            var DEBUG   = new ManagedColoredConsoleAppender.LevelColors(); DEBUG.Level = Level.Debug; DEBUG.ForeColor = ConsoleColor.Green;
            var INFO    = new ManagedColoredConsoleAppender.LevelColors(); INFO.Level = Level.Info; INFO.ForeColor = ConsoleColor.Cyan;
            var WARN    = new ManagedColoredConsoleAppender.LevelColors(); WARN.Level = Level.Warn; WARN.ForeColor = ConsoleColor.Yellow;
            var ERROR   = new ManagedColoredConsoleAppender.LevelColors(); ERROR.Level = Level.Error; ERROR.ForeColor = ConsoleColor.Magenta;
            var FATAL   = new ManagedColoredConsoleAppender.LevelColors(); FATAL.Level = Level.Fatal; FATAL.ForeColor = ConsoleColor.Red;

            console.AddMapping(TRACE);
            console.AddMapping(DEBUG);
            console.AddMapping(INFO);
            console.AddMapping(WARN);
            console.AddMapping(ERROR);
            console.AddMapping(FATAL);

            console.ActivateOptions();
            console.Layout = patternLayout;
            hierarchy.Root.AddAppender(console);

            hierarchy.Root.Level = Level.Trace;
            hierarchy.Configured = true;
        }
Example #4
0
        void UseLogConsoleConfig(Hierarchy repository, LogLevel logLevelMax, LogLevel logLevelMin)
        {
            ManagedColoredConsoleAppender console = new ManagedColoredConsoleAppender();
            PatternLayout layoutConsole           = new PatternLayout
            {
                ConversionPattern = "%n%date{yyyy-MM-dd HH:mm:ss.fff} %-5level [%thread] %c %m",
            };

            console.AddFilter(new LevelRangeFilter()
            {
                LevelMax = ConvertToLevel(logLevelMax), LevelMin = ConvertToLevel(logLevelMin)
            });
            console.AddMapping(
                new ManagedColoredConsoleAppender.LevelColors {
                Level = Level.Error, ForeColor = ConsoleColor.DarkRed
            });
            console.AddMapping(
                new ManagedColoredConsoleAppender.LevelColors {
                Level = Level.Warn, ForeColor = ConsoleColor.DarkYellow
            });

            layoutConsole.ActivateOptions();
            console.Layout = layoutConsole;
            console.ActivateOptions();
            repository.Root.AddAppender(console);

            repository.Configured = true;
        }
Example #5
0
        private static ManagedColoredConsoleAppender CreateConsoleLog(IFilter filter = null)
        {
            var layout = new PatternLayout(patternLayoutFormat);

            var appender = new ManagedColoredConsoleAppender {
                Layout = layout
            };

            appender.AddMapping(new LevelColors {
                Level = Level.Notice, ForeColor = ConsoleColor.White
            });
            appender.AddMapping(new LevelColors {
                Level = Level.Info, ForeColor = ConsoleColor.White
            });
            appender.AddMapping(new LevelColors {
                Level = Level.Error, ForeColor = ConsoleColor.Red
            });
            appender.AddMapping(new LevelColors {
                Level = Level.Fatal, ForeColor = ConsoleColor.Red
            });
            appender.AddMapping(new LevelColors {
                Level = Level.Warn, ForeColor = ConsoleColor.Yellow
            });
            appender.ActivateOptions();
            if (filter != null)
            {
                appender.AddFilter(filter);
            }

            return(appender);
        }
Example #6
0
        /// <summary>
        /// Configures the logging subsystem.
        /// </summary>
        private static void ConfigureLogging()
        {
            var layout = new log4net.Layout.PatternLayout(LogPattern);

            layout.ActivateOptions();

            // Create a list of appenders
            var appenders = new List <AppenderSkeleton>();

            var consoleAppender = new ManagedColoredConsoleAppender()
            {
                Layout    = layout,
                Threshold = Level.Debug,
                Target    = "Console.Out"
            };

            consoleAppender.AddMapping(new ManagedColoredConsoleAppender.LevelColors()
            {
                Level     = Level.Info,
                ForeColor = ConsoleColor.Gray
            });
            consoleAppender.AddMapping(new ManagedColoredConsoleAppender.LevelColors()
            {
                Level     = Level.Debug,
                ForeColor = ConsoleColor.Green
            });
            consoleAppender.AddMapping(new ManagedColoredConsoleAppender.LevelColors()
            {
                Level     = Level.Warn,
                ForeColor = ConsoleColor.DarkYellow
            });
            consoleAppender.AddMapping(new ManagedColoredConsoleAppender.LevelColors()
            {
                Level     = Level.Error,
                ForeColor = ConsoleColor.Red
            });

            appenders.Add(consoleAppender);

            // Configure the appenders in the list based on the build.
            foreach (var appender in appenders)
            {
                appender.AddFilter(new log4net.Filter.LevelRangeFilter()
                {
#if DEBUG
                    LevelMin = Level.Debug,
#else
                    LevelMin = Level.Info,
#endif
                    LevelMax = Level.Fatal
                });

                appender.ActivateOptions();
            }

            // Finally, perform the log configuration
            log4net.Config.BasicConfigurator.Configure(appenders.ToArray());
        }
Example #7
0
        public void SetUp()
        {
            XmlDocument xmlDoc      = new XmlDocument();
            XmlElement  log4NetNode = xmlDoc.CreateElement(Log4NetXmlConstants.Log4Net);

            IElementConfiguration configuration = Substitute.For <IElementConfiguration>();

            configuration.ConfigXml.Returns(xmlDoc);
            configuration.Log4NetNode.Returns(log4NetNode);

            mSut = new ManagedColoredConsoleAppender(configuration);
        }
Example #8
0
        public static ILog ConfigureManagedColoredConsoleAppender(this ILog log, params ManagedColoredConsoleAppender.LevelColors[] mapping)
        {
            var appender = new ManagedColoredConsoleAppender();

            appender.Layout = ILogExtensions.PatternLayout;
            mapping.ForEach(m => appender.AddMapping(m));
            appender.ActivateOptions();

            log.AddAppender(appender);

            return(log);
        }
Example #9
0
    public static void InitLogging()
    {
        var layout = new PatternLayout
        {
            ConversionPattern = "%date [%-3thread] %-5level %logger [%ndc] - %message%newline"
        };

        layout.ActivateOptions();
        var consoleAppender = new ManagedColoredConsoleAppender
        {
            Threshold = Level.Debug,
            Layout    = layout,
        };

        consoleAppender.AddMapping(new ManagedColoredConsoleAppender.LevelColors
        {
            ForeColor = ConsoleColor.Red,
            BackColor = ConsoleColor.White,
            Level     = Level.Fatal
        });
        consoleAppender.AddMapping(
            new ManagedColoredConsoleAppender.LevelColors {
            ForeColor = ConsoleColor.Red, Level = Level.Error
        });
        consoleAppender.AddMapping(
            new ManagedColoredConsoleAppender.LevelColors {
            ForeColor = ConsoleColor.Yellow, Level = Level.Warn
        });
        consoleAppender.AddMapping(
            new ManagedColoredConsoleAppender.LevelColors {
            ForeColor = ConsoleColor.Green, Level = Level.Info
        });
        consoleAppender.AddMapping(
            new ManagedColoredConsoleAppender.LevelColors {
            ForeColor = ConsoleColor.White, Level = Level.Debug
        });
        consoleAppender.AddMapping(
            new ManagedColoredConsoleAppender.LevelColors {
            ForeColor = ConsoleColor.Gray, Level = Level.Verbose
        });

        consoleAppender.ActivateOptions();

        var executingAssembly = Assembly.GetExecutingAssembly();
        var repository        = log4net.LogManager.GetRepository(executingAssembly);

        BasicConfigurator.Configure(repository, consoleAppender);

        NServiceBus.Logging.LogManager.Use <Log4NetFactory>();
    }
Example #10
0
        private ManagedColoredConsoleAppender GetManagedColoredConsoleAppender()
        {
            var managedColoredConsoleAppender = new ManagedColoredConsoleAppender();

            managedColoredConsoleAppender.AddMapping(this.GetLevelColors(Level.Info, ConsoleColor.Green));
            managedColoredConsoleAppender.AddMapping(this.GetLevelColors(Level.Error, ConsoleColor.DarkRed));
            managedColoredConsoleAppender.AddMapping(this.GetLevelColors(Level.Warn, ConsoleColor.DarkYellow));
            managedColoredConsoleAppender.AddMapping(this.GetLevelColors(Level.Debug, ConsoleColor.Blue));

            PatternLayout patternLayout = new PatternLayout
            {
                ConversionPattern = "[%date] [%thread] [%-5level] - %message%newline"
            };

            patternLayout.ActivateOptions();

            managedColoredConsoleAppender.Layout = patternLayout;
            managedColoredConsoleAppender.ActivateOptions();

            return(managedColoredConsoleAppender);
        }
Example #11
0
        private static IAppender CreateConsoleAppender()
        {
            var consoleAppender = new ManagedColoredConsoleAppender();

            consoleAppender.AddMapping(new ManagedColoredConsoleAppender.LevelColors
            {
                Level     = Level.Info,
                ForeColor = ConsoleColor.Green
            });
            consoleAppender.AddMapping(new ManagedColoredConsoleAppender.LevelColors
            {
                Level     = Level.Warn,
                ForeColor = ConsoleColor.Yellow
            });
            consoleAppender.AddMapping(new ManagedColoredConsoleAppender.LevelColors
            {
                Level     = Level.Error,
                ForeColor = ConsoleColor.Red
            });
            consoleAppender.Layout = new log4net.Layout.PatternLayout("%d [%t] %-5p %c %m%n");
            consoleAppender.ActivateOptions();

            return(consoleAppender);
        }
Example #12
0
        /// <summary>
        /// Initializes with a default configuration.
        /// </summary>
        /// <param name="useConsole">是否输出到控制台</param>
        /// <param name="useFile">是否输出到文件</param>
        /// <returns></returns>
        public static ICollection Configure(bool useConsole = false, bool useFile = true)
        {
            // 创建默认工厂
            ILoggerRepository repository;
            string            repositoryName = "log4net-default-repository";  // 默认工厂

            if (LoggerManager.Exists(repositoryName))
            {
                repository = LoggerManager.GetRepository(repositoryName);
            }
            else
            {
                repository = LoggerManager.CreateRepository(repositoryName);
            }

            // 进行配置
            ArrayList arrayList = new ArrayList();

            using (new LogLog.LogReceivedAdapter(arrayList))
            {
                // 日志输出格式, 各种参数设置参见PatternLayout.cs:
                // %m(message):    输出的日志消息;
                // %n(newline):    换行;
                // %d(datetime):   输出当前语句运行的时刻;
                // %r(runtime):    输出程序从运行到执行到当前语句时消耗的毫秒数;
                // %t(threadid):   当前语句所在的线程ID;
                // %p(priority):   日志的当前日志级别;
                // %c(class):      当前日志对象的名称;
                // %L:             输出语句所在的行号;
                // %F:             输出语句所在的文件名;
                // %-10:           表示最小长度为10,如果不够,则用空格填充;
                PatternLayout patternLayout = new PatternLayout();

                //patternLayout.ConversionPattern = "--------时间: %d, 耗时: %r(ms), 类型: %-5p --------%n对象: %c%n消息: %m%n%n";
                //patternLayout.ConversionPattern = "--------时间: %d, 耗时: %r(ms), 类型: %-5p --------%n对象: %c%n消息: %m%n详情: %exception%n%n";
                patternLayout.ConversionPattern = "--------时间: %d, 类型: %-5p --------%n%property{source}%property{class}%property{method}%property{message}%property{detail}%property{data}%n";
                patternLayout.ActivateOptions();

                #region 文件输出器

                RollingFileAppender fileAppender = null;
                if (useFile)
                {
                    fileAppender = new RollingFileAppender();
                    // 日志文件名,
                    // 如果RollingStyle为Composite或Date, 则这里一般设置成目录名, 文件名在DatePattern里设置;
                    // 如果RollingStyle为其他滚动方式, 则必须设置成文件名
                    fileAppender.File = "log\\";

                    // 是否是静态的日志文件名, 即固定的日志文件名称,
                    // 如果你想要动态生成日志文件名,例如将RollingStyle设置成Date或Composite, 以让系统自动生成日志文件的名称,
                    // 那么你必须将staticLogFileName设置成false
                    fileAppender.StaticLogFileName = false;

                    // 日志滚动方式,可设置成:
                    // Size(按文件), 此时你应该将file的值设置成一个固定的名称, 例如: test.log 或 log\\test.log 或 c:\\log\\test.log;
                    // Date(按日期), 此时你应该将file的值设置成一个目录或者空字符串, 如果设置成空字符串, 系统将把日志记录在当前应用程序所在的目录中;
                    // Composite(按日期及文件),默认为Composite
                    fileAppender.RollingStyle = RollingFileAppender.RollingMode.Composite;

                    // 日志文件名格式,
                    // 当RollingStyle为Composite或Date, 在此处设置日志文件名的格式时,
                    // 固定不变的部分用单引号括起来, 其它部分则设置成日期格式
                    fileAppender.DatePattern = "yyyyMMdd'.log'";

                    // 日志记录是否追加到文件,
                    // 默认为true, 表示将记录追加到文件尾部; flase, 表示覆盖已有的日志文件记录
                    fileAppender.AppendToFile = true;

                    // 单个日志文件的最大尺寸,
                    // 可用的单位有: KB | MB | GB, 默认为字节(不带单位)
                    fileAppender.MaximumFileSize = "2MB";

                    //每日最多记录的日志文件个数
                    fileAppender.MaxSizeRollBackups = 10;

                    // 单个日志文件超限后日志备份方式, 默认值为 - 1,
                    // 当日志文件超过MaximumFileSize大小时,系统根据CountDirection的值来备份日志文件:
                    // (1)当此值设置成 > -1时, 则根据file里指定的文件名依次按0,1,2...递增创建日志备份, 直到数量等于MaxSizeRollBackups参数值为止,
                    // 以后的日志记录则会根据maximumFileSize循环写入file, 当filesize > maximumFileSize, 进行一次新的循环写入时, 会将file记录写入备份日志, 并对备份日志进行重新编号;
                    // (2)当此值设置成 <= -1时, 则根据file里指定的文件名依次按0,1,2...递增创建日志备份, 直到数量等于MaxSizeRollBackups参数值为止,
                    // 以后的日志记录则会根据maximumFileSize循环写入file, 当filesize > maximumFileSize, 进行一次新的循环写入时, 不会将file记录写入备份日志, 即备份日志被固化不受影响-- >
                    fileAppender.CountDirection = -1;

                    fileAppender.Layout = patternLayout;
                    fileAppender.ActivateOptions();
                }

                #endregion

                #region 控制台输出器

                //ConsoleAppender consoleAppender = null;
                //if (useConsole)
                //{
                //	consoleAppender = new ConsoleAppender();
                //	consoleAppender.Layout = patternLayout;
                //	consoleAppender.ActivateOptions();
                //}

                #endregion

                #region 颜色控制台输出器

                ManagedColoredConsoleAppender coloredConsoleAppender = null;
                if (useConsole)
                {
                    coloredConsoleAppender = new ManagedColoredConsoleAppender();

                    // 设置日志级别, 默认值为DEBUG,
                    // 级别由低到高依次为: ALL | DEBUG < INFO < WARN < ERROR < FATAL | OFF.其中:
                    // ALL表示记录所有日志;
                    // OFF表示不记录日志, 即关闭日志记录;
                    // 其它则按级别记录,例如级别设置成WARN,则低于WARN级别的INFO和DEBUG日志将不会被记录, 其它依次类推.
                    var debugMap = new LevelColors
                    {
                        ForeColor = ConsoleColor.White,
                        Level     = Level.Debug
                    };

                    var infoMap = new LevelColors
                    {
                        ForeColor = ConsoleColor.Green,
                        Level     = Level.Info
                    };

                    var warnMap = new LevelColors
                    {
                        ForeColor = ConsoleColor.Yellow,
                        Level     = Level.Warn
                    };

                    var errorMap = new LevelColors
                    {
                        ForeColor = ConsoleColor.Red,
                        Level     = Level.Error
                    };

                    var fatalMap = new LevelColors
                    {
                        ForeColor = ConsoleColor.Magenta,
                        Level     = Level.Fatal
                    };

                    debugMap.ActivateOptions();
                    infoMap.ActivateOptions();
                    warnMap.ActivateOptions();
                    errorMap.ActivateOptions();
                    fatalMap.ActivateOptions();
                    coloredConsoleAppender.AddMapping(debugMap);
                    coloredConsoleAppender.AddMapping(warnMap);
                    coloredConsoleAppender.AddMapping(infoMap);
                    coloredConsoleAppender.AddMapping(errorMap);
                    coloredConsoleAppender.AddMapping(fatalMap);

                    coloredConsoleAppender.Layout = patternLayout;
                    coloredConsoleAppender.ActivateOptions();
                }

                #endregion

                var appenders = new List <IAppender>();
                if (useFile)
                {
                    appenders.Add(fileAppender);
                }
                if (useConsole)
                {
                    appenders.Add(coloredConsoleAppender);
                }

                if (appenders.Count > 0)
                {
                    InternalConfigure(repository, appenders.ToArray());
                }
            }
            repository.ConfigurationMessages = arrayList;
            return(arrayList);
        }
Example #13
0
        //void UseFileCofnig(ILoggerRepository rep)
        //{
        //    var type = MethodBase.GetCurrentMethod().DeclaringType;
        //    if (type != null)
        //    {
        //        var ns = type.Namespace;
        //        Assembly assembly = Assembly.GetExecutingAssembly();
        //        string resourceName = ns + ".log4net.config";
        //        Stream stream = assembly.GetManifestResourceStream(resourceName);
        //        XmlConfigurator.Configure(rep, stream);
        //    }
        //}

        //void UseCodeConfig(Hierarchy repository, string type)
        void UseCodeConfig(Hierarchy repository, LogLevel logLevel)
        {
            var ip = JimuHelper.GetLocalIPAddress();

            if (_options.EnableFileLog && (_options.FileLogLevel & logLevel) == logLevel)
            {
                PatternLayout layout = new PatternLayout
                {
                    ConversionPattern = "%date{yyyy-MM-dd HH:mm:ss.fff} %-5p [" + ip + "] %m%n"
                };
                layout.ActivateOptions();

                RollingFileAppender roller = new RollingFileAppender
                {
                    AppendToFile = false
                };
                var path = _options.EnableFileLog ? _options.FileLogPath : "log";
                roller.File = $@"{path}/{logLevel.ToString().ToLower()}/";
                roller.PreserveLogFileNameExtension = true;
                roller.StaticLogFileName            = false;
                roller.MaxSizeRollBackups           = 0;
                roller.DatePattern  = $@"yyyyMMdd"".log""";
                roller.RollingStyle = RollingFileAppender.RollingMode.Date;
                roller.Layout       = layout;
                roller.MaxFileSize  = 10000000;
                switch (logLevel)
                {
                case LogLevel.Debug:
                    roller.Threshold = Level.Debug;
                    break;

                case LogLevel.Info:
                    roller.Threshold = Level.Info;
                    break;

                case LogLevel.Warn:
                    roller.Threshold = Level.Warn;
                    break;

                case LogLevel.Error:
                    roller.Threshold = Level.Error;
                    break;
                }
                roller.ActivateOptions();
                repository.Root.AddAppender(roller);
            }

            if (_options.EnableConsoleLog && (_options.ConsoleLogLevel & logLevel) == logLevel)
            {
                //ManagedColoredConsoleAppender managedColoredConsoleAppender = new
                ManagedColoredConsoleAppender console = new ManagedColoredConsoleAppender();
                PatternLayout layoutConsole           = new PatternLayout
                {
                    ConversionPattern = "%n%date{yyyy-MM-dd HH:mm:ss.fff} %-5level [" + ip + "] %m",
                };
                switch (logLevel)
                {
                case LogLevel.Debug:
                    //console.Threshold = Level.Debug;
                    console.AddFilter(new LevelRangeFilter()
                    {
                        LevelMax = Level.Debug, LevelMin = Level.Debug
                    });
                    //console.AddFilter(new LevelMatchFilter() { LevelToMatch = Level.Debug, AcceptOnMatch = true });
                    break;

                case LogLevel.Info:
                    //console.Threshold = Level.Info;
                    console.AddFilter(new LevelRangeFilter()
                    {
                        LevelMax = Level.Info, LevelMin = Level.Info
                    });
                    //console.AddFilter(new LevelMatchFilter() { LevelToMatch = Level.Info, AcceptOnMatch = true });
                    break;

                case LogLevel.Warn:
                    //console.Threshold = Level.Warn;
                    console.AddFilter(new LevelRangeFilter()
                    {
                        LevelMax = Level.Warn, LevelMin = Level.Warn
                    });
                    //console.AddFilter(new LevelMatchFilter() { LevelToMatch = Level.Warn, AcceptOnMatch = true });
                    break;

                case LogLevel.Error:
                    //console.Threshold = Level.Error;
                    console.AddFilter(new LevelRangeFilter()
                    {
                        LevelMax = Level.Error, LevelMin = Level.Error
                    });
                    //console.AddFilter(new LevelMatchFilter() { LevelToMatch = Level.Error });
                    break;
                }
                console.AddMapping(
                    new ManagedColoredConsoleAppender.LevelColors {
                    Level = Level.Error, ForeColor = ConsoleColor.DarkRed
                });
                console.AddMapping(
                    new ManagedColoredConsoleAppender.LevelColors {
                    Level = Level.Warn, ForeColor = ConsoleColor.DarkYellow
                });

                layoutConsole.ActivateOptions();
                console.Layout = layoutConsole;
                console.ActivateOptions();
                repository.Root.AddAppender(console);
            }

            //MemoryAppender memory = new MemoryAppender();
            //memory.ActivateOptions();
            //repository.Root.AddAppender(memory);

            //repository.Root.Level = Level.Debug;
            repository.Configured = true;
        }
Example #14
0
        // ------------------------------------------------------------------------------------------------------------------------
        //  Initialize and start log4net
        // ------------------------------------------------------------------------------------------------------------------------
        public static void InitializeLog4net(string logFilename = null, Level logLevel = null)
        {
            if (logFilename == null)
            {
                logFilename = @"'logs\WinFCU_'yyyyMMdd'.log'";
            }
            if (logLevel == null)
            {
                logLevel = (cli.IsPresent("Debug") && !cli.IsNegated("Debug")) ? Level.Debug : Level.Info;
            }
            // --------------------------------------------------------------------------------------------------------------------
            //  See whether a 'customer' log4net configuration has been provided. When present use it
            // --------------------------------------------------------------------------------------------------------------------
            ConfigurationSection l4nSection = total.APP.Configuration.GetSection("log4net");

            if (l4nSection != null)
            {
                log4net.Config.XmlConfigurator.Configure();
                Log4netSetRootLevel(logLevel);
                total.Logger.Debug("Using customer specific log4net configuration");
            }
            // --------------------------------------------------------------------------------------------------------------------
            //   Configure the default logger (console and rolling logfile)
            // --------------------------------------------------------------------------------------------------------------------
            else
            {
                // ----------------------------------------------------------------------------------------------------------------
                //   Reset the current log config and start a new one
                // ----------------------------------------------------------------------------------------------------------------
                if (total.Logger != null)
                {
                    total.Logger.Logger.Repository.ResetConfiguration();
                }
                Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
#pragma warning disable IDE0017 // Simplify object initialization
                PatternLayout patternLayout = new PatternLayout();
#pragma warning restore IDE0017 // Simplify object initialization
                patternLayout.ConversionPattern = "%date{yyyy-MM-dd HH:mm:ss} - %-5level - %m%n";
                patternLayout.ActivateOptions();
                // ----------------------------------------------------------------------------------------------------------------
                //   Create a RollingLogfileAppender
                // ----------------------------------------------------------------------------------------------------------------
#pragma warning disable IDE0017 // Simplify object initialization
                RollingFileAppender rlfa = new RollingFileAppender();
#pragma warning restore IDE0017 // Simplify object initialization
                rlfa.Name              = "WinFCU-RollingLogfileAppender";
                rlfa.File              = logFilename;
                rlfa.AppendToFile      = true;
                rlfa.StaticLogFileName = false;
                rlfa.RollingStyle      = RollingFileAppender.RollingMode.Date;
                rlfa.Layout            = patternLayout;
                rlfa.Threshold         = logLevel;
                rlfa.ActivateOptions();
                // ----------------------------------------------------------------------------------------------------------------
                //   Create a ManagedColoredConsoleAppender
                // ----------------------------------------------------------------------------------------------------------------
#pragma warning disable IDE0017 // Simplify object initialization
                ManagedColoredConsoleAppender mcca = new ManagedColoredConsoleAppender();
#pragma warning restore IDE0017 // Simplify object initialization
                mcca.Name = "WinFCU-ManagedColoredConsoleAppender";
                mcca.AddMapping(new ManagedColoredConsoleAppender.LevelColors {
                    Level = Level.Fatal, ForeColor = ConsoleColor.Magenta, BackColor = ConsoleColor.Black
                });
                mcca.AddMapping(new ManagedColoredConsoleAppender.LevelColors {
                    Level = Level.Error, ForeColor = ConsoleColor.Red, BackColor = ConsoleColor.Black
                });
                mcca.AddMapping(new ManagedColoredConsoleAppender.LevelColors {
                    Level = Level.Warn, ForeColor = ConsoleColor.Yellow, BackColor = ConsoleColor.Black
                });
                mcca.AddMapping(new ManagedColoredConsoleAppender.LevelColors {
                    Level = Level.Info, ForeColor = ConsoleColor.Gray
                });
                mcca.AddMapping(new ManagedColoredConsoleAppender.LevelColors {
                    Level = Level.Debug, ForeColor = ConsoleColor.Green, BackColor = ConsoleColor.Gray
                });
                mcca.Layout    = patternLayout;
                mcca.Threshold = logLevel;
                mcca.ActivateOptions();
                // ----------------------------------------------------------------------------------------------------------------
                //   Build the hierarchy and start it
                // ----------------------------------------------------------------------------------------------------------------
                hierarchy.Root.AddAppender(rlfa);
                hierarchy.Root.AddAppender(mcca);
                hierarchy.Configured = true;
                // ----------------------------------------------------------------------------------------------------------------
                //   Finaly inform the audience we are working with an embedded log4net configuration
                // ----------------------------------------------------------------------------------------------------------------
                total.Logger.Warn(" >>>> WinFCU - No customer log4net configuration found! Using embedded configuration settings");
            }
        }
Example #15
0
        public static void Setup(Level level, string logPath, string id)
        {
            Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(Assembly.GetEntryAssembly());

            hierarchy.Root.RemoveAllAppenders();

            PatternLayout patternLayout = new PatternLayout();

            patternLayout.ConversionPattern = "%date{HH:mm:ss,fff},%level,%message%newline";
            patternLayout.ActivateOptions();

            RollingFileAppender roller = new RollingFileAppender();

            roller.AppendToFile       = false;
            roller.File               = Path.Combine(logPath, $"extractlog_{id}.csv");
            roller.Layout             = patternLayout;
            roller.MaxSizeRollBackups = 5;
            roller.MaximumFileSize    = "1MB";
            roller.RollingStyle       = RollingFileAppender.RollingMode.Size;
            roller.StaticLogFileName  = true;
            roller.ActivateOptions();

            PatternLayout patternLayout2 = new PatternLayout();

            patternLayout2.ConversionPattern = "%level,%message%newline";
            patternLayout2.ActivateOptions();

            ManagedColoredConsoleAppender console = new ManagedColoredConsoleAppender();
            var l1 = new LevelColors
            {
                ForeColor = ConsoleColor.Green,
                Level     = Level.Fatal
            };
            var l2 = new LevelColors
            {
                ForeColor = ConsoleColor.Red,
                Level     = Level.Error
            };
            var l3 = new LevelColors
            {
                ForeColor = ConsoleColor.Yellow,
                Level     = Level.Warn
            };
            var l4 = new LevelColors
            {
                ForeColor = ConsoleColor.White,
                Level     = Level.Info
            };
            var l5 = new LevelColors
            {
                ForeColor = ConsoleColor.White,
                Level     = Level.Debug
            };

            console.AddMapping(l1);
            console.AddMapping(l2);
            console.AddMapping(l3);
            console.AddMapping(l4);
            console.AddMapping(l5);
            console.Layout = patternLayout2;
            console.ActivateOptions();
            hierarchy.Root.Level = level;
            BasicConfigurator.Configure(hierarchy, roller, console);
        }