Ejemplo n.º 1
0
        /// <summary>
        ///  Rabbit MQ 配置扩展,使用Lambda 表达式 Action
        /// </summary>
        /// <param name="loggerFactory"></param>
        /// <param name="configActionOption"></param>
        /// <returns></returns>
        public static ILoggerFactory AddRabbitMQLogger(this ILoggerFactory loggerFactory, Action <RabbitMQLoggerOption> configActionOption)
        {
            RabbitMQLoggerOption logOption = new RabbitMQLoggerOption();

            configActionOption(logOption);

            RabbitMQLoggerProvider logProvider = new RabbitMQLoggerProvider(logOption);

            loggerFactory.AddProvider(logProvider);

            Console.WriteLine("--------------------------------------------------------------------------------");
            Console.WriteLine($"---------- [{DateTime.Now}] 日志组件[RabbitMQLogConfig]\n{logOption.ToString()}注册成功");
            Console.WriteLine($"---------- [{DateTime.Now}] 日志组件[RabbitMQLogProvider]\t注册成功");
            Console.WriteLine("--------------------------------------------------------------------------------");
            Console.WriteLine();

            return(loggerFactory);
        }
        /// <summary>
        /// 使用RabbitMQ Logger 组件服务
        /// </summary>
        /// <param name="app"></param>
        /// <param name="loggerFactory"></param>
        /// <param name="strConsulKey"></param>
        /// <returns></returns>
        public static IApplicationBuilder UseRabbitMQLoggerService(this IApplicationBuilder app, ILoggerFactory loggerFactory, string strConsulKey = "comm/logger/rabbitmq")
        {
            DefaultLoggerFactory = loggerFactory;
            IConsulKVHelper _ConsulKVHelper = app.ApplicationServices.GetService <IConsulKVHelper>();

            try
            {
                // 从 Consul 中获取RabbitMQ 位置
                RabbitMQLoggerOption conf = _ConsulKVHelper.GetJsonModelAsync <RabbitMQLoggerOption>(strConsulKey).Result;
                // 添加LoggerFactory
                loggerFactory.AddRabbitMQLogger(conf);
            }
            catch (Exception ex)
            {
                _ConsulKVHelper.SetValueAsync(strConsulKey, "{}");
                throw new ArgumentException($"注册中心配置[{strConsulKey}]不存在或无法转化为json", ex);
            }

            return(app);
        }