public void Fatal(PubLogger.Level level, string message, params object[] list) { Log (level, PubLogger.Severity.Fatal, message, list); }
public void Warning(PubLogger.Level level, string message, params object[] list) { Log (level, PubLogger.Severity.Warning, message, list); }
public void Error(PubLogger.Level level, string message, params object[] list) { Log (level, PubLogger.Severity.Error, message, list); }
protected void Log(PubLogger.Level level, PubLogger.Severity severity, string message, params object[] list) { StringBuilder builder = new StringBuilder (); builder.Append (level.ToString ()); if (severity != PubLogger.Severity.Informational) { builder.Append (" ("); builder.Append (severity.ToString ()); builder.Append ("): "); } else { builder.Append (": "); } StackTrace trace = new StackTrace (3); if (null != trace) { int total = trace.FrameCount; StackFrame frame = null; UseLoggerSubsystemAttribute subsystem = null; for (int current = 0; current < total; ++current) { frame = trace.GetFrame (current); var methodBase = frame.GetMethod (); var classType = methodBase.ReflectedType; subsystem = (UseLoggerSubsystemAttribute)Attribute.GetCustomAttribute (classType, typeof(UseLoggerSubsystemAttribute)); if (null != subsystem) { break; } frame = null; } if (null == frame) { frame = trace.GetFrame (0); } if (null != frame) { var methodBase = frame.GetMethod (); var classType = methodBase.ReflectedType; string className = classType.Name; string @namespace = classType.Namespace; if (null == subsystem) { subsystem = UseLoggerSubsystemAttribute.GetRegisteredNamespace (@namespace); } builder.Append ("["); if (subsystem != null) { builder.Append (subsystem.Name); builder.Append ("("); builder.Append (subsystem.Id.ToString ()); builder.Append (")"); } else { builder.Append (@namespace); } builder.Append ("] "); if (className.StartsWith ("<")) { builder.Append (classType.FullName); } else { builder.Append (className); } builder.Append ("."); builder.Append (methodBase.Name); builder.Append (" "); } } if (list.Length > 0) { builder.AppendFormat (message, list); } else { builder.Append( message); } ActualDebug.Write (builder.ToString ()); }