/// <summary> /// 存储日志对象实例。 /// </summary> /// <param name="logType">日志类型。</param> /// <param name="logContent">日志内容。</param> protected virtual void RecordLogs(EnumLogsType logType, string logContent) { try { this.OnLogRecordEvent(logType, logContent); this.storage.StorageLog(logType, logContent); } catch (Exception e) { string path = string.Format("{0}\\ERROR_{1:yyyyMMdd-HHmm}.txt", AppDomain.CurrentDomain.BaseDirectory, DateTime.Now); using (StreamWriter sw = new StreamWriter(path, true, UTF8Encoding.UTF8)) { sw.WriteLine(); sw.WriteLine(string.Format("记录日志时发生灾难性错误[{0:yyyy-MM-dd HH:mm:ss}]:", DateTime.Now)); this.WriteException(sw, e); } } }
/// <summary> /// 触发日志记录事件。. /// </summary> /// <param name="logType">日志类型。</param> /// <param name="logContent">日志内容。</param> protected virtual void OnLogRecordEvent(EnumLogsType logType, string logContent) { LogRecordHandler handler = this.LogRecordEvent; if (handler != null) { handler(logType, logContent); } }
/// <summary> /// 记录日志。 /// </summary> /// <param name="logType">日志类型。</param> /// <param name="logContent">日志内容。</param> public void StorageLog(EnumLogsType logType, string logContent) { string path = this.GetLogStoragePath(logType); string log = this.CreateLogBody(logContent); if (!string.IsNullOrEmpty(log) && !string.IsNullOrEmpty(path)) { Logger logger = loadLogger(path); if (logger != null) { logger.AppendLine(log); } } }
/// <summary> /// 日志文件的完整路径。 /// </summary> /// <param name="logType"></param> /// <returns></returns> protected virtual string GetLogStoragePath(EnumLogsType logType) { string filename = string.Format("{0}_{1}_{2}.log", this.head.LogFileHead, logType, this.LogFileEndTime); return Path.GetFullPath(string.Format("{0}\\{1}", this.config.StoragePath, filename)); }
/// <summary> /// 日志记录。 /// </summary> /// <param name="logType"></param> /// <param name="logContent"></param> private void LogRecord(EnumLogsType logType, string logContent) { this.OnChanged(string.Format("[{0:yyyy-MM-dd HH:mm:ss.fff}]{1}#{2}", DateTime.Now, logType, logContent)); }