//============================================================ // <T>输出信息。</T> // // @param level 级别 // @param refer 引用对象 // @param method 函数名称 // @param exception 例外对象 // @param message 消息内容 // @param parameters 参数集合 //============================================================ public override void Output(ELoggerLevel level, object refer, string method, Exception exception, string message, params object[] parameters) { FString format = new FString(); Format(format, level, refer, method, exception, message, parameters); Console.WriteLine(format); }
//============================================================ // <T>格式化。</T> // // @param buffer 字符串对象 // @param level 级别 //============================================================ public virtual void FormatMessage(FString format, ELoggerLevel level, object refer, string method, Exception exception, string message, object[] parameters) { // 追加函数信息 format += "["; if (refer is Type) { format += ((Type)refer).Name + '.' + method; } else { format += refer.GetType().Name + '.' + method; if (refer != null) { format += '@' + refer.GetHashCode().ToString("6X").ToUpper(); } } format.AppendRepeat(' ', METHOD_SPACE - format.Length); format += "] "; // 追加信息内容 if (null != parameters) { format += String.Format(message, parameters); } // 追加例外内容 if (null != exception) { format.AppendLine(); RException.MakeMessage(format, exception); } }
//============================================================ // <T>格式化。</T> // // @param buffer 字符串对象 // @param level 级别 //============================================================ public virtual void Format(FString format, ELoggerLevel level, object refer, string method, Exception exception, string message, object[] parameters) { // 追加时间 format += RDate.Format(_dateFormat) + ' '; // 追加级别 AppendLevel(format, level); // 追加线程编号 format += ':' + Thread.CurrentThread.ManagedThreadId.ToString("X2"); // 追加函数信息 if (refer is Type) { format += "-<static> ["; format += ((Type)refer).Name + '.' + method; } else { format += "-" + refer.GetHashCode().ToString("X8") + " ["; format += refer.GetType().Name + '.' + method; } format.AppendRepeat(' ', LOGGER_SPACE - format.Length); format += "] "; // 追加信息内容 if (null != parameters) { format += String.Format(message, parameters); } // 追加例外内容 if (null != exception) { format.AppendLine(); RException.MakeMessage(format, exception); } }
//============================================================ // <T>追加级别。</T> // // @param buffer 字符串对象 // @param level 级别 //============================================================ protected void AppendLevel(FString buffer, ELoggerLevel level) { switch (level) { case ELoggerLevel.Debug: buffer.Append('D'); break; case ELoggerLevel.Info: buffer.Append('I'); break; case ELoggerLevel.Warn: buffer.Append('W'); break; case ELoggerLevel.Error: buffer.Append('E'); break; case ELoggerLevel.Fatal: buffer.Append('F'); break; } }
//============================================================ // <T>输出消息。</T> // // @param refer 引用对象 // @param method 函数名称 // @param exception 例外对象 // @param message 消息内容 // @param parameters 消息参数 //============================================================ public static void Output(ELoggerLevel level, object refer, string method, Exception exception, string message, params object[] parameters) { if (null != _console) { _console.Write(level, refer, method, exception, message, parameters); } }
//============================================================ // <T>输出消息。</T> // // @param refer 引用对象 // @param method 函数名称 // @param exception 例外对象 // @param message 消息内容 // @param parameters 消息参数 //============================================================ public void Write(ELoggerLevel level, object refer, string method, Exception exception, string message, params object[] parameters) { // 监听处理 foreach (IListener listener in _listeners) { listener.Process(this, level, refer, method, exception, message, parameters); } }
public void Log(string message, ELoggerLevel level, Exception exception = null) { string loggerMessage = "[" + DateTime.Now + "]" + " [" + level + "] " + message; if (exception != null) { loggerMessage += "[EXCEPTION] " + exception.Message; } Execute(loggerMessage); }
public void Log <T>(string message, ELoggerLevel level, List <T> list) where T : IComparable <T> { string loggerMessage = "[" + DateTime.Now + "]" + " [" + level + "] " + message + " [LIST] : ("; for (int i = 0; i < list.Count; ++i) { loggerMessage += list[i] + (i != (list.Count - 1) ? ", " : " )"); } Execute(loggerMessage); }
public void Log <T>(string message, ELoggerLevel level, T[] array) where T : IComparable <T> { string loggerMessage = "[" + DateTime.Now + "]" + " [" + level + "] " + message + " [ARRAY] : ("; for (int i = 0; i < array.Length; ++i) { loggerMessage += array[i] + (i != (array.Length - 1) ? ", " : " )"); } Execute(loggerMessage); }
//============================================================ // <T>监听处理。</T> // // @param buffer 字符串对象 // @param level 级别 //============================================================ public override void Process(object sender, params object[] args) { // 获得参数 ELoggerLevel level = (ELoggerLevel)args[0]; object refer = args[1]; string method = (string)args[2]; Exception exception = (Exception)args[3]; string message = (string)args[4]; object[] parameters = (object[])args[5]; // 输出信息 Output(level, refer, method, exception, message, parameters); }
//============================================================ // <T>输出信息。</T> // // @param level 级别 // @param refer 引用对象 // @param method 函数名称 // @param exception 例外对象 // @param message 消息内容 // @param parameters 参数集合 //============================================================ public abstract void Output(ELoggerLevel level, object refer, string method, Exception exception, string message, params object[] parameters);
public void Log <T>(string message, ELoggerLevel level, T value) where T : IComparable <T> { string loggerMessage = "[" + DateTime.Now + "]" + " [" + level + "] " + message + " [VALUE] : " + value; Execute(loggerMessage); }