public static void Main(string[] args) { #region 获取配置文件中MQ连接串 var mqConn = string.Empty; try { var filepath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config", "log4net.config"); //获取MQ连接串 ExeConfigurationFileMap ecf = new ExeConfigurationFileMap(); ecf.ExeConfigFilename = filepath; Configuration config = ConfigurationManager.OpenMappedExeConfiguration(ecf, ConfigurationUserLevel.None); mqConn = config.AppSettings.Settings["UPMQConntion"].Value; } catch (Exception e) { QWPlatform.SystemLibrary.Logger.Instance.Error("【日志记录服务】:服务启动失败!读取配置发生异常:" + e?.Message); return; } #endregion 获取配置文件中MQ连接串 var bus = RabbitHutch.CreateBus(mqConn); IExchange ex = bus.Advanced.ExchangeDeclare("Logger.Direct", ExchangeType.Direct); IQueue qu = bus.Advanced.QueueDeclare("LoggerQueue"); bus.Advanced.Bind(ex, qu, "UP.Logger"); bus.Advanced.Consume(qu, (body, properties, info) => Task.Factory.StartNew(() => { try { var message = Encoding.UTF8.GetString(body); Console.WriteLine(message); var model = LoggerModel.ConvertLoggerMessage(message); #region 写入日志库 using (var db = new DbContext()) { var result = db.Insert(model).Execute(); if (result <= 0) { throw new Exception("写入日志数据库失败!"); } } #endregion 写入日志库 } catch (Exception e) { //1. 这个异常如何处理?是否考虑直接写入数据库? QWPlatform.SystemLibrary.Logger.Instance.Error("【日志记录服务】:写入数据失败," + e?.Message); throw e; } })); Console.WriteLine("启动日志服务成功!"); Console.ReadLine(); bus.Dispose(); }
/// <summary> /// 转换日志消息 /// </summary> /// <param name="message"></param> /// <returns></returns> public static LoggerModel ConvertLoggerMessage(string message) { try { var model = Strings.JsonToModel <UpLoggerInfo>(message); var result = new LoggerModel { id = model.Id, 接口关键字 = model.ApiId, 日志关键字 = model.Key, 系统分类 = model.System.ToInt32(), 日志内容 = model.Message, ip地址 = model.FromIP, 日志等级 = model.Level.ToInt32(), 记录时间 = model.LogDateTime, 异常信息 = model.Ex != null?Strings.ObjectToJson(model.Ex) : string.Empty }; return(result); } catch (Exception ex) { throw ex; } }