Ejemplo n.º 1
0
                public void RegisterCurrentNamespace()
                {
                    StackTrace trace = new StackTrace(2);

                    int total = trace.FrameCount;

                    string subsystemName = null;

                    for (int current = 0; current < total; ++current)
                    {
                        StackFrame frame = trace.GetFrame(current);

                        var methodBase = frame.GetMethod();
                        var classType  = methodBase.ReflectedType;

                        string @namespace = classType.Namespace;

                        if (null == subsystemName)
                        {
                            UseLoggerSubsystemAttribute subsystem = (UseLoggerSubsystemAttribute)Attribute.GetCustomAttribute(classType, typeof(UseLoggerSubsystemAttribute));
                            if (null == subsystem)
                            {
                                continue;
                            }

                            subsystemName = subsystem.Name;
                        }

                        if (String.IsNullOrEmpty(@namespace))
                        {
                            continue;
                        }

                        RegisterNamespace(@namespace, subsystemName);
                        return;
                    }

                    throw new MissingFieldException();
                }
Ejemplo n.º 2
0
                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());
                }