/// <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); }