/// <summary> /// 进行处理,合并默认值 /// </summary> /// <param name="conf"></param> /// <returns></returns> public static LogConfigBase Fix(LogConfigBase conf) { if (conf.FileName.IsEmpty()) { conf.FileName = Default.FileName; } if (conf.FilePath.IsEmpty()) { conf.FilePath = Default.FilePath; } if (conf.Pattern.IsEmpty()) { conf.Pattern = Default.Pattern; } return(conf); }
/// <summary> /// 日志入口 /// </summary> /// <param name="loglevel"></param> /// <param name="title"></param> /// <param name="obj"></param> void Log(LogLevel loglevel, string title, params object[] obj) { if (string.IsNullOrEmpty(title.Trim())) { throw new Exception("非调试信息的日志,标题不允许为空"); } try { lock (ObjectExtension.Locker) { LogConfigBase config = GetConfig(_logName); if (config.Loglevel > loglevel) { return; //判断日志级别,不正确的级别就不记日志了 } switch (config.Utils) { case LogUtils.Log4Net: { Log4Net.Log(config, _logName, loglevel, title, obj); break; } } } } catch (DllNotFoundException ex) { throw new Exception("未找到组件" + ex.Source); } catch (FileNotFoundException ex) { throw new Exception("未找到组件" + ex.FileName); } catch (JsonReaderException ex) { throw new Exception("配置文件:" + ex.Source + "错误:" + ex.Message + ".请删除或修复配置文件"); } catch (IOException ex) { throw new Exception(ex.Message); } catch (Exception ex) { //其他错误就不抛了 throw ex; } }
/// <summary> /// 取配置文件,取不到就是ALL /// </summary> /// <param name="Title"></param> /// <returns></returns> internal static LogConfigBase GetConfig(string Title) { //静态里没有,就开始读文件初始化 if (ConfigDic == null || ConfigDic.Count == 0) { ConfigDic = new Dictionary <string, LogConfigBase>(); string path = AppDomain.CurrentDomain.BaseDirectory + @"\Log.config"; if (File.Exists(path)) { StreamReader sr = File.OpenText(path); string jsonArrayText = sr.ReadToEnd(); sr.Close(); ConfigDic = JsonConvert.DeserializeObject <Dictionary <string, LogConfigBase> >(jsonArrayText); //没有ALL节点,加上默认 if (!ConfigDic.Keys.Contains("ALL")) { ConfigDic.Add("ALL", LogConfigBase.Default); } } //不存在配置文件,加上默认 else { ConfigDic.Add("ALL", LogConfigBase.Default); } } //从静态里取配置 if (ConfigDic.Keys.Contains(Title)) { return(LogConfigBase.Fix(ConfigDic[Title])); } else { return(LogConfigBase.Fix(ConfigDic["ALL"])); } }