public static string CreateMongoDBPoolAppender() { var hier = LogManager.GetRepository(); if (hier == null) { return(string.Empty); } MongoDBPoolAppender appender = new MongoDBPoolAppender(); appender.Name = string.Format("mongoDBAppender_{0}", DateTime.Now.Ticks); MongoDBPoolAppender.ConnectionString = LogDBString; MongoDBPoolAppender.CollectionName = "logs"; appender.AddParameter(new MongoDBAppenderParameter { ParameterName = "level", Layout = new Layout2RawLayoutAdapter(new PatternLayout("%level")) }); appender.AddParameter(new MongoDBAppenderParameter { ParameterName = "appid", Layout = new Layout2RawLayoutAdapter(new CustomLayout("%appid")) }); appender.AddParameter(new MongoDBAppenderParameter { ParameterName = "serverip", Layout = new Layout2RawLayoutAdapter(new CustomLayout("%serverip")) }); appender.AddParameter(new MongoDBAppenderParameter { ParameterName = "method", Layout = new Layout2RawLayoutAdapter(new CustomLayout("%method")) }); appender.AddParameter(new MongoDBAppenderParameter { ParameterName = "title", Layout = new Layout2RawLayoutAdapter(new CustomLayout("%title")) }); appender.AddParameter(new MongoDBAppenderParameter { ParameterName = "index", Layout = new Layout2RawLayoutAdapter(new CustomLayout("%index")) }); appender.AddParameter(new MongoDBAppenderParameter { ParameterName = "group", Layout = new Layout2RawLayoutAdapter(new CustomLayout("%group")) }); appender.AddParameter(new MongoDBAppenderParameter { ParameterName = "message", Layout = new Layout2RawLayoutAdapter(new CustomLayout("%clientMessage")) }); appender.AddParameter(new MongoDBAppenderParameter { ParameterName = "exception", Layout = new Layout2RawLayoutAdapter(new ExceptionLayout()) }); appender.AddParameter(new MongoDBAppenderParameter { ParameterName = "logdate", Layout = new RawTimeStampLayout() }); BasicConfigurator.Configure(appender); appender.ActivateOptions(); return(appender.Name); }
public static void Start() { Task.Factory.StartNew(() => { while (true) { try { try { //Thread.Sleep(SleepSeconds); if (LogQueue.Count > 0) { var mc = MongoDBPoolAppender.GetCollection(); var times = Partition(); for (int i = 0; i < times; i++) { int num = MaxCountPerTime; BsonDocument bsonDocument; var list = new List <BsonDocument>(); while (num > 0 && LogQueue.TryDequeue(out bsonDocument)) { list.Add(bsonDocument); num--; } mc.InsertBatch <BsonDocument>(list); } } } catch (System.Exception ex) { throw; } //2017-05-20 为了方便调试才注释的这个 } catch { } } }); }