Exemple #1
0
        /// <summary>
        /// 返回logger
        /// </summary>
        /// <param name="runtimeModeProvider">环境运行提供者,如果为空则不写,如有需要,则重写该方法则可</param>
        /// <param name="loggerBuilder">日志构建者</param>
        /// <param name="executor">执行者</param>
        /// <param name="exception">异常信息</param>
        /// <param name="context">上下文</param>
        protected virtual ILogger GetLogger(IRuntimeModeProvider runtimeModeProvider, ILoggerBuilder loggerBuilder, object executor, Exception exception, object context)
        {
            if (loggerBuilder == null)
            {
                return(null);
            }

            if (executor == null)
            {
                return(loggerBuilder.Build(typeof(LoggerAttribute)));
            }

            return(loggerBuilder.Build(executor.GetType()));
        }
Exemple #2
0
        /// <summary>
        /// 在出错的时候写日志
        /// </summary>
        /// <param name="runtimeModeProvider">环境运行提供者,如果为空则不写,如有需要,则重写该方法则可</param>
        /// <param name="loggerBuilder">日志构建者</param>
        /// <param name="executor">执行者</param>
        /// <param name="exception">异常信息</param>
        /// <param name="context">上下文</param>
        public void OnError(IRuntimeModeProvider runtimeModeProvider, ILoggerBuilder loggerBuilder, object executor, Exception exception, object context)
        {
            var logger = this.GetLogger(runtimeModeProvider, loggerBuilder, executor, exception, context);

            if (logger == null)
            {
                return;
            }

            if (!this.Match(runtimeModeProvider, loggerBuilder, executor, exception, context))
            {
                return;
            }

            this.Write(runtimeModeProvider, logger, executor, exception, context);
        }
Exemple #3
0
        /// <summary>
        /// 是否匹配
        /// </summary>
        /// <param name="runtimeModeProvider">环境运行提供者,如果为空则不写,如有需要,则重写该方法则可</param>
        /// <param name="loggerBuilder">日志构建者</param>
        /// <param name="executor">执行者</param>
        /// <param name="exception">异常信息</param>
        /// <param name="context">上下文</param>
        protected virtual bool Match(IRuntimeModeProvider runtimeModeProvider, ILoggerBuilder loggerBuilder, object executor, Exception exception, object context)
        {
            if (runtimeModeProvider == null)
            {
                return(false);
            }

            if (runtimeModeProvider.RuntimeModeArray == null || runtimeModeProvider.RuntimeModeArray.Length <= 0)
            {
                return(true);
            }

            foreach (var i in runtimeModeProvider.RuntimeModeArray)
            {
                if (this.RuntimeMode.IsEquals(i.RuntimeMode))
                {
                    return(true);
                }
            }

            return(false);
        }
Exemple #4
0
 /// <summary>
 /// 写日志
 /// </summary>
 /// <param name="runtimeModeProvider">环境运行提供者,如果为空则不写,如有需要,则重写该方法则可</param>
 /// <param name="logger">日志</param>
 /// <param name="executor">执行者</param>
 /// <param name="exception">异常信息</param>
 /// <param name="context">上下文</param>
 protected virtual void Write(IRuntimeModeProvider runtimeModeProvider, ILogger logger, object executor, Exception exception, object context)
 {
     logger.Error("logger attribute", exception);
 }