/// <summary> /// 写入日志文件,该操作是线程安全的 /// </summary> /// <param name="filenameTemplate"></param> /// <param name="pathTemplate"></param> /// <param name="log"></param> /// <param name="logDir"></param> /// <param name="logTime"></param> /// <param name="eLevel"></param> private static void Write(string log, string logDir, bool logTime, ExceptionHelper.ExceptionLevel eLevel, string pathTemplate, string filenameTemplate) { try { Monitor.Enter(_sync); if (string.IsNullOrEmpty(_appName)) { FileInfo fi = new FileInfo(Process.GetCurrentProcess().MainModule.ModuleName); try { _appName = fi.Name.Remove(fi.Name.Length - fi.Extension.Length); } catch { _appName = "Null"; } _basePath = string.IsNullOrWhiteSpace(_LogFilePath) ? AppDomain.CurrentDomain.BaseDirectory : _LogFilePath; } DateTime curDatetime = DateTime.Now; string path = string.Format(string.IsNullOrEmpty(pathTemplate) ? _LogPathTemplate : pathTemplate, _basePath, curDatetime, logDir); string filename = String.Format(string.IsNullOrEmpty(filenameTemplate) ? _LogFilenameTemplate : filenameTemplate, curDatetime); string strTime = logTime ? curDatetime.ToString("[HH:mm:ss.fff]:") : ""; WriteIntoFile(String.Format("{3}{2}{0}{1}", strTime, log, ExceptionHelper.GetToken(eLevel), eLevel == ExceptionHelper.ExceptionLevel.None ? "" : "#"), path, filename); } catch (Exception ex) { string errMessage = "写入日志文件"; try { DateTime curDatetime = DateTime.Now; string content = String.Format( "{3}{2}{0}{1}", logTime ? curDatetime.ToString("[HH:mm:ss.fff]:") : "", log, ExceptionHelper.GetToken(eLevel), eLevel == ExceptionHelper.ExceptionLevel.None ? "" : "#"); string filename = String.Format(string.IsNullOrEmpty(filenameTemplate) ? _LogFilenameTemplate : filenameTemplate, curDatetime); errMessage = string.Format("写[{0}]至日志[{1}]文件", content, filename); } catch (Exception) { } LogExceptionToEventLog(ex, errMessage); } finally { Monitor.Exit(_sync); } }
/// <summary> /// 写入日志文件,该操作是线程安全的 /// </summary> /// <param name="log"></param> /// <param name="logDir"></param> /// <param name="logTime"></param> /// <param name="eLevel"></param> public static void WriteLog(string log, string logDir, bool logTime, ExceptionHelper.ExceptionLevel eLevel) { WriteLog(log, logDir, logTime, eLevel, _LogPathTemplate, _LogFilenameTemplate); }
/// <summary> /// 写入日志文件,该操作是线程安全的 /// </summary> /// <param name="log"></param> /// <param name="eLevel"></param> /// <param name="parameters"></param> public static void WriteLog(string log, ExceptionHelper.ExceptionLevel eLevel, params object[] parameters) { WriteLog(string.Format(log, parameters), eLevel); }
/// <summary> /// 写入日志文件,该操作是线程安全的 /// </summary> /// <param name="log"></param> /// <param name="eLevel"></param> public static void WriteLog(string log, ExceptionHelper.ExceptionLevel eLevel) { Write(log, _defaultLogDirectoryName, true, eLevel, _LogPathTemplate, _LogFilenameTemplate); }
/// <summary> /// 写入日志文件,该操作是线程安全的 /// </summary> /// <param name="log"></param> /// <param name="logDir"></param> /// <param name="logTime"></param> /// <param name="eLevel"></param> /// <param name="filenameTemplate"> /// {0}: 当前时间; /// 默认值为"{0:yyyy-MM-dd-HH}.log" /// </param> /// <param name="pathTemplate"> /// {0}: 程序的基础路径; /// {1}: 当前时间; /// {2}: 记录的日志文件夹; /// {3}: 应用程序的名字; /// 默认值为@"{0}Logs\{2}\{1:yyyy\\M}\" /// </param> public static void WriteLog(string log, string logDir, bool logTime, ExceptionHelper.ExceptionLevel eLevel, string pathTemplate, string filenameTemplate) { Write(log, logDir, logTime, eLevel, pathTemplate, filenameTemplate); }