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()); }