/// <summary> /// 写入致命错误信息 /// </summary> /// <param name="sequence">日志文件生成频率</param> /// <param name="compact">是否使用紧凑格式(每行记录一条信息)</param> /// <param name="msg">日志内容</param> public void Fatal(LogFileSpan sequence, bool compact, object msg) { Write(LogLevel.Fatal, sequence, this.type, msg, compact); }
/// <summary> /// 写入致命错误信息 /// </summary> /// <param name="sequence">日志文件生成频率</param> /// <param name="compact">是否使用紧凑格式(每行记录一条信息)</param> /// <param name="format">格式化字符串</param> /// <param name="msgs">日志内容</param> public void Fatal(LogFileSpan sequence, bool compact, string format, params object[] msgs) { Write(LogLevel.Fatal, sequence, this.type, string.Format(format, msgs), compact); }
/// <summary> /// 写入错误信息 /// </summary> /// <param name="sequence">日志文件生成频率</param> /// <param name="compact">是否使用紧凑格式(每行记录一条信息)</param> /// <param name="msg">日志内容</param> public void Error(LogFileSpan sequence, bool compact, object msg) { Write(LogLevel.Error, sequence, this.type, msg, compact); }
/// <summary> /// 写入信息 /// </summary> /// <param name="sequence">日志文件生成频率</param> /// <param name="msg">日志内容</param> public void Fatal(LogFileSpan sequence, object msg) { Write(LogLevel.Fatal, sequence, this.type, msg, false); }
/// <summary> /// 写入错误信息 /// </summary> /// <param name="sequence">日志文件生成频率</param> /// <param name="msg">日志内容</param> public void Error(LogFileSpan sequence, object msg) { Write(LogLevel.Error, sequence, this.type, msg, false); }
/// <summary> /// 写入错误信息 /// </summary> /// <param name="sequence">日志文件生成频率</param> /// <param name="format">格式化字符串</param> /// <param name="msgs">日志内容</param> public void Error(LogFileSpan sequence, string format, params object[] msgs) { Write(LogLevel.Error, sequence, this.type, string.Format(format, msgs), false); }
/// <summary> /// 写入警告信息 /// </summary> /// <param name="sequence">日志文件生成频率</param> /// <param name="msg">日志内容</param> public void Warn(LogFileSpan sequence, object msg) { Write(LogLevel.Warn, sequence, this.type, msg, false); }
/// <summary> /// 写入警告信息 /// </summary> /// <param name="sequence">日志文件生成频率</param> /// <param name="compact">是否使用紧凑格式(每行记录一条信息)</param> /// <param name="msg">日志内容</param> public void Warn(LogFileSpan sequence, bool compact, object msg) { Write(LogLevel.Warn, sequence, this.type, msg, compact); }
/// <summary> /// 写入调试信息 /// </summary> /// <param name="sequence">日志文件生成频率</param> /// <param name="compact">是否使用紧凑格式(每行记录一条信息)</param> /// <param name="msg">日志内容</param> public void Debug(LogFileSpan sequence, bool compact, object msg) { Write(LogLevel.Debug, sequence, this.type, msg, compact); }
/// <summary> /// 写入调试信息 /// </summary> /// <param name="sequence">日志文件生成频率</param> /// <param name="msg">日志内容</param> public void Debug(LogFileSpan sequence, object msg) { Write(LogLevel.Debug, sequence, this.type, msg, false); }
/// <summary> /// 写入信息 /// </summary> /// <param name="sequence">日志文件生成频率</param> /// <param name="format">格式化字符串</param> /// <param name="msgs">日志内容</param> public void Info(LogFileSpan sequence, string format, params object[] msgs) { Write(LogLevel.Info, sequence, this.type, string.Format(format, msgs), true); }
/// <summary> /// 写入信息 /// </summary> /// <param name="sequence">日志文件生成频率</param> /// <param name="msg">日志内容</param> public void Info(LogFileSpan sequence, object msg) { Write(LogLevel.Info, sequence, this.type, msg, false); }
/// <summary> /// 写日志 /// </summary> /// <param name="level">日志级别</param> /// <param name="sequence">日志文件生成频率</param> /// <param name="type">日志内容的类型(会按照类型生成子文件夹)</param> /// <param name="msg">日志内容</param> /// <param name="compact">是否使用压缩的格式来记录日志信息</param> private void Write(LogLevel level, LogFileSpan sequence, string type, object msg, bool compact) { if (level == LogLevel.Info || (this.level == LogLevel.None ? (int)level >= (int)LogAdapter.globallevel : (int)level >= (int)this.level)) //可以写日志 { #region 使用系统定义的文件 string path = this.logFilePath; if (string.IsNullOrEmpty(path)) { switch (sequence) { case LogFileSpan.None: { path = string.Format("{1}{0}{2}.txt", '_', level, type); break; } case LogFileSpan.Year: { path = string.Format("{1}{0}{2}{0}{3}.txt", '_', level, type, DateTime.Now.Year); break; } case LogFileSpan.Month: { path = string.Format("{1}{0}{2}{0}{3}.txt", '_', level, type, DateTime.Now.ToString("yyyyMM")); break; } case LogFileSpan.Week: { path = string.Format("{1}{0}{2}{0}{3}{4}周.txt", '_', level, type, DateTime.Now.Year, cnci.Calendar.GetWeekOfYear(DateTime.Now, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Friday)); break; } case LogFileSpan.Hour: { path = string.Format("{1}{0}{2}{0}{3}.txt", '_', level, type, DateTime.Now.ToString("yyyyMMddHH")); break; } case LogFileSpan.Lateast: { path = string.Format("{1}{0}{2}{0}{3}.txt", '_', level, type, DateTime.Now.ToString("yyyyMMddHH")); break; } default: { path = string.Format("{1}{0}{2}{0}{3}.txt", '_', level, type, DateTime.Now.ToString("yyyyMMdd")); break; } } path = Path.Combine(LogAdapter.basepath, path); } try { string dir = Path.GetDirectoryName(path); if (!Path.IsPathRooted(dir)) { dir = dir.Trim().Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar).TrimStart(Path.DirectorySeparatorChar); dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, dir); } if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } if (level == LogLevel.Pulse && this.currentPulseCount >= PulseCount && File.Exists(path)) { string txt = null; this.currentPulseCount = 0; using (StreamReader sr = new StreamReader(path, System.Text.Encoding.UTF8)) { int totalCount = 0; while (sr.ReadLine() != null) { totalCount++; } sr.BaseStream.Seek(0, SeekOrigin.Begin); while (currentPulseCount++ < totalCount / 2) { sr.ReadLine(); } txt = sr.ReadToEnd(); } using (StreamWriter sw = new StreamWriter(path, false, System.Text.Encoding.UTF8)) { sw.BaseStream.SetLength(0); sw.Write(txt); } } using (StreamWriter sw = new StreamWriter(path, true, System.Text.Encoding.UTF8)) { if (compact) { sw.Write(DateTime.Now.ToString(timeformat)); sw.WriteLine(msg.ToString().Replace("\r\n", "").Replace("\r", "").Replace("\n", "")); } else { sw.Write("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ "); sw.Write(DateTime.Now.ToString(timeformat)); sw.WriteLine("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄"); sw.WriteLine(msg); } if (!compact) { sw.WriteLine(); } sw.Flush(); sw.Close(); } } catch { } #endregion } }