예제 #1
0
        public static ILogger CreateLogger(string sectionName)
        {
            var section = ConfigurationManager.GetSection("LoggingConfiguration") as LoggingConfiguration;

            if (section == null)
            {
                return(new NoOpLogger());
            }
            var logger = new FileAppendLogger(Path.Combine(section.Directory, section.ApplicationName + ".log"), true)
            {
                Options = 0
            };

            if (section.EnableDebug)
            {
                logger.Options = logger.Options | LogOptions.DebugEnabled;
            }
            if (section.EnableInfo)
            {
                logger.Options = logger.Options | LogOptions.InfoEnabled;
            }
            if (section.EnableWarning)
            {
                logger.Options = logger.Options | LogOptions.WarningEnabled;
            }
            if (section.EnableError)
            {
                logger.Options = logger.Options | LogOptions.ErrorEnabled;
            }
            return(logger);
        }
예제 #2
0
        /// <summary>
        ///     Returns a logger in accordance with the specified settings.</summary>
        /// <param name="console">
        ///     If <c>true</c>, the resulting logger will log to the console.</param>
        /// <param name="file">
        ///     If non-<c>null</c>, the resulting logger will log to the specified file.</param>
        /// <param name="logVerbosity">
        ///     Configures the verbosity of the resulting logger.</param>
        /// <remarks>
        ///     <para>
        ///         Uses <see cref="ConsoleLogger"/> amd <see cref="FileAppendLogger"/> as appropriate.</para>
        ///     <para>
        ///         If both logging mechanisms are specified, uses a <see cref="MulticastLogger"/> to combine the two.</para></remarks>
        public static LoggerBase GetLogger(bool console, string file, string logVerbosity)
        {
            if (!console && file == null)
            {
                return(new NullLogger());
            }

            ConsoleLogger consoleLogger = null;

            if (console)
            {
                consoleLogger = new ConsoleLogger();
                consoleLogger.ConfigureVerbosity(logVerbosity);
                if (file == null)
                {
                    return(consoleLogger);
                }
            }

            FileAppendLogger fileLogger = null;

            if (file != null)
            {
                fileLogger = new FileAppendLogger(file)
                {
                    SharingVioWait = TimeSpan.FromSeconds(2)
                };
                fileLogger.ConfigureVerbosity(logVerbosity);
                if (!console)
                {
                    return(fileLogger);
                }
            }

            var logger = new MulticastLogger();

            logger.Loggers["file"]    = fileLogger;
            logger.Loggers["console"] = consoleLogger;
            logger.ConfigureVerbosity(logVerbosity);
            return(logger);
        }