コード例 #1
0
ファイル: LoggerFactory.cs プロジェクト: zhangbo27/fireasy
        /// <summary>
        /// 根据提供的配置创建 <see cref="ILogger"/> 对象。
        /// </summary>
        /// <param name="setting"></param>
        /// <returns></returns>
        private static ILogger CreateBySetting(LoggingConfigurationSetting setting)
        {
            var caching = setting.LogType.New <ILogger>();

            if (caching == null)
            {
                return(null);
            }

            caching.As <IConfigurationSettingHostService>(s => ConfigurationUnity.AttachSetting(s, setting));

            return(caching);
        }
コード例 #2
0
        /// <summary>
        /// Initializes target loggers in mode determined by configuration
        /// </summary>
        internal void Initialize()
        {
            logItemsQueue = new ConcurrentQueue <ApplicationLogs>();
            targetLoggers = new Dictionary <int, ILogger>();

            // LogController Level settings
            LoggingConfigurationSetting loggingSetting = CurrentLoggingConfiguration.LoggingConfigurationSetting;

            if (loggingSetting != null)
            {
                this.LoggingMode   = loggingSetting.Mode;
                this.SleepInterval = loggingSetting.SleepInterval;
                this.MaxQueueSize  = loggingSetting.MaxQueueSize;
            }

            // Logger Level settings
            LoggerSettings = CurrentLoggersConfiguration.LoggerConfigurationSettings.Cast <LoggerConfigurationSetting>().ToList();

            try
            {
                // Setup Target loggers from configuration ordered by PriorityOrder
                foreach (LoggerConfigurationSetting configuredLogger in LoggerSettings.OrderBy(o => Convert.ToInt32(o.PriorityOrder)))
                {
                    loggerSequence++;
                    //loggerInstance = dependencyManager.Resolve<ILogger>(configuredLogger.TypeName);
                    loggerInstance.LoggerParameters = configuredLogger.Parameters;
                    loggerInstance.LoggerPriority   = Convert.ToInt32(configuredLogger.PriorityOrder);
                    targetLoggers.Add(loggerSequence, loggerInstance);
                }
            }
            catch (Exception)
            {
                // Do Nothing if logger setup fails
            }

            // If using Asynchronous processing, use another thread for Async Queue processing
            if (LoggingMode.Trim().ToUpperInvariant() == LogMode.Asynchronous.ToString().Trim().ToUpperInvariant())
            {
                processQueueTask = Task.Factory.StartNew(() =>
                {
                    while (true)
                    {
                        ProcessFromQueue();
                        Thread.Sleep(SleepInterval);
                    }
                }, new CancellationToken(), TaskCreationOptions.LongRunning, TaskScheduler.Default);
            }
            isInitialized = true;
        }
コード例 #3
0
ファイル: LoggerFactory.cs プロジェクト: zhangbo27/fireasy
        /// <summary>
        /// 根据应用程序配置,创建日志管理器。
        /// </summary>
        /// <param name="configName">应用程序配置项的名称。</param>
        /// <returns><paramref name="configName"/>缺省时,如果应用程序未配置,则为 <see cref="DefaultLogger"/>,否则为配置项对应的 <see cref="ILogger"/> 实例。</returns>
        public static ILogger CreateLogger(string configName = null)
        {
            ILogger logger;
            LoggingConfigurationSetting setting = null;
            var section = ConfigurationUnity.GetSection <LoggingConfigurationSection>();

            if (section != null && section.Factory != null)
            {
                logger = section.Factory.CreateInstance(configName) as ILogger;
                if (logger != null)
                {
                    return(logger);
                }
            }

            if (string.IsNullOrEmpty(configName))
            {
                if (section == null || section.Default == null)
                {
                    return(DefaultLogger.Instance);
                }
                else
                {
                    setting = section.Default;
                }
            }
            else if (section != null)
            {
                setting = section.Settings[configName];
            }

            if (setting == null || setting.LogType == null)
            {
                return(null);
            }

            return(CreateBySetting(setting));
        }