public void SaveSettingToMongoDB(List <InfoSetting> listInfo) { MongoDatabase db = MongoDBConn.GetDatabase("WcfLogServer");//数据库名字 if (db != null) { //存入mongodb,保存前进行查询 foreach (InfoSetting item in listInfo) { //Console.WriteLine("----------------------------------------------------------"); //Console.WriteLine("InfoSetting \r\nCollectionName:{0} \r\nIndexName:{1} \r\nIsShard:{2} \r\nShardSpan:{3}", item.CollectionName, item.IndexName, item.IsShard, item.ShardSpan); string collectionName = "InfoSetting"; try { MongoCollection <InfoSetting> categories = db.GetCollection <InfoSetting>(collectionName);//列表名字 InfoSetting info = categories.FindOne(new QueryComplete(new BsonDocument("CollectionName", item.CollectionName))); if (info != null) { info.IndexName = item.IndexName; info.ModifyTime = DateTime.Now; categories.Save <InfoSetting>(info);//更新 } else { item.ModifyTime = DateTime.Now; item.CreateTime = DateTime.Now; categories.Insert <InfoSetting>(item);//添加 } } catch (Exception ex) { LogService.Write("库:WcfLogServer 表:" + collectionName + " 出现异常." + ex.ToString()); } } } }
/// <summary> /// 保存日志异常配置信息 /// </summary> /// <param name="logInfo"></param> public void SaveSetting(List <AbstractLogInfo> logInfo) { try { // 库名:WcfLogServer 表名 InfoSetting // 读出属性,做索引,分库处理 // 保存到数据库中去,采用批量方式 List <InfoSetting> listInfo = new List <InfoSetting>(); InfoSetting infoSetting; string temp; logInfo.ForEach(log => { Type typeLog = log.GetType(); string typeName = typeLog.Name; if (!ConfigProvider.Common.DicInfoSetting.Contains(typeName)) //判断索引是否已经创建过 { ConfigProvider.Common.DicInfoSetting.Add(typeName); //添加到已创建索引列表中 infoSetting = new InfoSetting(); string indexes = ""; ShardSpan shardSpan = ShardSpan.Month; bool isShard = false; bool isAdd = true; listInfo.ForEach(info => { if (info.CollectionName == typeName) { isAdd = false; } }); if (isAdd) { //通过反射获取属性 typeLog.GetProperties().ToList().ForEach(property => { property.GetCustomAttributes(typeof(PersistenceColumnAttribute), true).Cast <PersistenceColumnAttribute>().ToList().ForEach(pca => { if (pca.IsIndex) { temp = property.Name + ","; if (indexes.IndexOf(temp) == -1) { indexes += property.Name + ","; } } if (pca.IsShard) { isShard = true; shardSpan = pca.ShardSpan; } }); }); infoSetting.CollectionName = typeName; infoSetting.IndexName = indexes.TrimEnd(','); infoSetting.IsShard = isShard; infoSetting.ShardSpan = shardSpan; listInfo.Add(infoSetting); } } }); SaveSettingToMongoDB(listInfo); } catch (Exception ex) { LogService.Write(ex); } }
/// <summary> /// 保存日志异常配置信息 /// </summary> /// <param name="logInfo"></param> public void SaveSetting(List<AbstractLogInfo> logInfo) { try { // 库名:WcfLogServer 表名 InfoSetting // 读出属性,做索引,分库处理 // 保存到数据库中去,采用批量方式 List<InfoSetting> listInfo = new List<InfoSetting>(); InfoSetting infoSetting; string temp; logInfo.ForEach(log => { Type typeLog = log.GetType(); string typeName = typeLog.Name; if (!ConfigProvider.Common.DicInfoSetting.Contains(typeName))//判断索引是否已经创建过 { ConfigProvider.Common.DicInfoSetting.Add(typeName);//添加到已创建索引列表中 infoSetting = new InfoSetting(); string indexes = ""; ShardSpan shardSpan = ShardSpan.Month; bool isShard = false; bool isAdd = true; listInfo.ForEach(info => { if (info.CollectionName == typeName) { isAdd = false; } }); if (isAdd) { //通过反射获取属性 typeLog.GetProperties().ToList().ForEach(property => { property.GetCustomAttributes(typeof(PersistenceColumnAttribute), true).Cast<PersistenceColumnAttribute>().ToList().ForEach(pca => { if (pca.IsIndex) { temp = property.Name + ","; if (indexes.IndexOf(temp) == -1) { indexes += property.Name + ","; } } if (pca.IsShard) { isShard = true; shardSpan = pca.ShardSpan; } }); }); infoSetting.CollectionName = typeName; infoSetting.IndexName = indexes.TrimEnd(','); infoSetting.IsShard = isShard; infoSetting.ShardSpan = shardSpan; listInfo.Add(infoSetting); } } }); SaveSettingToMongoDB(listInfo); } catch (Exception ex) { LogService.Write(ex); } }