コード例 #1
0
        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);
        }
コード例 #2
0
 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 {
             }
         }
     });
 }