/// <summary> /// Initialization. /// </summary> /// <param name="savePath">Save path of log file.</param> /// <param name="rollSizeKB">Log file max size, when it happend, auto create new one.</param> /// <param name="logFormatType">File Format.</param> public static void Init(string savePath, int rollSizeKB = 10000, LogFormatType logFormatType = LogFormatType.Default) { LogCustomWriter.SavePath = savePath; LogCustomWriter.RollSizeKB = rollSizeKB; _logformatType = logFormatType; CheckInParam(); }
public WrapperTextWriter(TextWriter innerWriter, string defaultLogLevel) { _innerWriter = innerWriter; _defaultLogLevel = defaultLogLevel; var envLogLevel = Environment.GetEnvironmentVariable(LOG_LEVEL_ENVIRONMENT_VARAIBLE); if (!string.IsNullOrEmpty(envLogLevel)) { if (Enum.TryParse <LogLevel>(envLogLevel, true, out var result)) { _minmumLogLevel = result; } } var envLogFormat = Environment.GetEnvironmentVariable(LOG_FORMAT_ENVIRONMENT_VARAIBLE); if (!string.IsNullOrEmpty(envLogFormat)) { if (Enum.TryParse <LogFormatType>(envLogFormat, true, out var result)) { _logFormatType = result; } } }
internal static ILogFormatter GetDebugTraceFormatter(LogFormatType logFormatType) { var template = MsgDebugTraceTemplate; if (logFormatType == LogFormatType.Details) { template = MsgDebugTraceTemplate2; } else if (logFormatType == LogFormatType.Release) { template = MsgDebugTraceTemplate3; } return(new TextFormatter(template)); }
internal static ILogFormatter GetRollingFlatFileFormatter(LogFormatType logFormatType) { var template = MsgRollingFlatFileTemplate; if (logFormatType == LogFormatType.Details) { template = MsgRollingFlatFileTemplate2; } else if (logFormatType == LogFormatType.Release) { template = MsgRollingFlatFileTemplate3; } return(new TextFormatter(template)); }
internal static string GetSeverity(TraceEventType severity, LogFormatType logFormatType) { switch (severity) { case TraceEventType.Critical: return(logFormatType == LogFormatType.Default ? "C" : "Critical"); case TraceEventType.Error: return(logFormatType == LogFormatType.Default ? "E" : "Error"); case TraceEventType.Information: return(logFormatType == LogFormatType.Default ? "I" : "Info"); case TraceEventType.Warning: return(logFormatType == LogFormatType.Default ? "W" : "Warn"); case TraceEventType.Verbose: return("V"); default: throw new ArgumentOutOfRangeException("severity"); } }
/// <summary> /// /// </summary> /// <param name="fileName"></param> /// <param name="logFormatType"></param> public void AddLogSource(string fileName, LogFormatType logFormatType) { if (string.IsNullOrEmpty(fileName)) { throw new ArgumentNullException("fileName", "Log FileName is Null"); } if (!_traceSources.ContainsKey(fileName)) { lock (_safeObj) { if (!_traceSources.ContainsKey(fileName)) { var logRollingListener = new LogRollingFlatFileListener(Path.Combine(SavePath, fileName + ".Log"), LogTemplate.GetRollingFlatFileFormatter(logFormatType), RollSizeKB).CreateListener(_loggerType); var debugTraceListener = new DebugTraceListener(LogTemplate.GetDebugTraceFormatter(logFormatType)).CreateListener(_loggerType); var mainLogSource = new LogSource("MainLogSource", SourceLevels.All); mainLogSource.Listeners.Clear(); mainLogSource.Listeners.Add(logRollingListener); mainLogSource.Listeners.Add(debugTraceListener); _traceSources.Add(fileName, mainLogSource); } } } }
/// <summary> /// 获取指定日志的具有指定格式的数据。 /// </summary> /// <param name="log">日志对象。</param> /// <param name="logFormat">日志格式。</param> /// <returns></returns> private string Log2String(LogEntity log, LogFormatType logFormat) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); if (logFormat == LogFormatType.Text) { sb.AppendLine("[" + log.DateTime.ToString("yyyy-MM-dd HH:mm:ss") + "] "); //switch (log.Level) //{ // case LogLevelType.Debug: // sb.Append("调试信息"); // break; // case LogLevelType.Info: // sb.Append("信息"); // break; // case LogLevelType.Warning: // sb.Append("警告"); // break; // case LogLevelType.Error: // sb.Append("错误"); // break; // case LogLevelType.Fatal: // sb.Append("致命错误"); // break; //} sb.AppendLine("Level:" + log.Level.ToString()); if (log.EventID != 0) { sb.AppendLine("EventID:" + log.EventID.ToString()); } if (!string.IsNullOrEmpty(log.EventSourceName)) { sb.AppendLine("EventSourceName:" + log.EventSourceName); } if (!string.IsNullOrEmpty(log.TaskCategory)) { sb.AppendLine("TaskCategory:" + log.TaskCategory); } if (!string.IsNullOrEmpty(log.UserID)) { sb.AppendLine("UserID:" + log.UserID); } sb.AppendLine(log.Message); sb.AppendLine(); } else if (logFormat == LogFormatType.XML) { sb.Append("<Log>"); sb.Append("<DateTime>" + log.DateTime.ToString("yyyy-MM-dd HH:mm:ss") + "</DateTime>"); //switch (log.Level) //{ // case LogLevelType.Debug: // sb.Append(Log.GetXMLElementString("Level", "调试信息")); // break; // case LogLevelType.Info: // sb.Append(Log.GetXMLElementString("Level", "信息")); // break; // case LogLevelType.Warning: // sb.Append(Log.GetXMLElementString("Level", "警告")); // break; // case LogLevelType.Error: // sb.Append(Log.GetXMLElementString("Level", "错误")); // break; // case LogLevelType.Fatal: // sb.Append(Log.GetXMLElementString("Level", "致命错误")); // break; //} sb.Append(Log.GetXMLElementString("Level", log.Level.ToString())); if (log.EventID != 0) { sb.Append("<EventID>" + log.EventID.ToString() + "</EventID>"); } if (!string.IsNullOrEmpty(log.EventSourceName)) { sb.Append(Log.GetXMLElementString("EventSourceName", log.EventSourceName)); } if (!string.IsNullOrEmpty(log.TaskCategory)) { sb.Append(Log.GetXMLElementString("TaskCategory", log.TaskCategory)); } if (!string.IsNullOrEmpty(log.UserID)) { sb.Append(Log.GetXMLElementString("UserID", log.UserID)); } sb.Append(Log.GetXMLElementString("Message", log.Message)); sb.Append(@"</Log> "); } return(sb.ToString()); }