zoukankan      html  css  js  c++  java
  • Moon转告给你一个比Log4net更好日志框架--TracerX Logger 及其对应的日志查看器

    一、介绍

    TracerX logger是一个易于上手,且拥有众多高级特性的.NET日志框架.

    它能够发送输出结果到多目的地(循环文件、事件日志等....).它也能生成文本和二进制文件.
    它拥有一个强大的查看器,该查看器支持过滤、着色、多线程、目录结构、跟踪级别.....
    同时它也能够折叠及扩展输出格式,可以显示绝对或者先对的时间戳.可以查看任意一行的输出调用栈.这些特性可以更加容易地帮助我们诊断程序问题.

    该文主要介绍如何使用该框架,其中包含了许多代码示例.同时告诉大家,该框架用于了诸多商业软件中.

    二、日志查看器

    TracerX/TracerXViewer.png

    如下诸多特性可以通过菜单查看(有些需要通过双击查看),不要忘记试试在每行或者列头使用一下右键.

    1.可以通过线程名、线程ID、跟踪级别、文本通配符、以及方法名来过滤或者着色;

    2.消息的文本会通过其调用深度缩进;

    3.你可以通过双击每行的+-折叠或者展开方法调用;

    4. 你可以通过使用面包屑栏或者鼠标右键浏览和查看堆栈.

    5.你可以单击在面包屑上的箭头来查看给定级别的方法调用.

    6.你能够查看绝对或者相对的时间戳.

    7.你可以折叠或者展开每行(其中包含了嵌入式换行符)

    8.你可以给每行加一个书签(可能改行航油特殊的搜索字符串,也可能选中的线程或日志级别)

    9.你可以查看调用堆栈(这些堆栈指向选中的行)

    10.你可以从同一个线程或不同线程跳到下一个区域

    11.你可以选中数据行或者复制列文本到粘贴板;

    12.可以自定义列的显示

    其他的大家子去发现吧.

    三、咱们来一个helloworld

    using TracerX;
    
    namespace HelloWorld
    {
        class Program
        {
            // 这个大家应该懂的.
            static Logger Log = Logger.GetLogger("Program");
    
            static void Main(string[] args)
            {
                // 采用默认配置
                Logger.DefaultBinaryFile.Open();
    
                // 日志输出一个字符串
                Log.Info("Hello, World!");
            }
        }
    }

    看看日志查看器的效果

    http://www.codeproject.com/KB/dotnet/TracerX/HelloWorldViewer.png

    对于初始化

    public static Logger GetLogger(string name)
    public static Logger GetLogger(Type type)
    public static Logger GetLogger(string name, AppDomain appDomain)

    四、来一个复杂点的例子

    using System;
    using System.Threading;
    using System.IO;
    using TracerX;
    
    namespace Sample
    {
        class Program
        {
            private static readonly Logger Log = Logger.GetLogger("Program");
    
            // Just one way to initialize TracerX early.
            private static bool LogFileOpened = InitLogging();
    
            // Initialize the TracerX logging system.
            private static bool InitLogging()
            {
                // It's best to name most threads.
                Thread.CurrentThread.Name = "MainThread";
    
                // Load TracerX configuration from an XML file.
                Logger.Xml.Configure("TracerX.xml");
    
                // Open the log file.
                return Logger.DefaultBinaryFile.Open();
            }
    
            static void Main(string[] args)
            {
                using (Log.InfoCall())
                {
                    Helper.Bar();
                    Helper.Foo();
                }
            }
        }
    
        class Helper {
            private static readonly Logger Log = Logger.GetLogger("Helper");
    
            public static void Foo()
            {
                using (Log.DebugCall())
                {
                    Log.Debug(DateTime.Now, " is the current time.");
                    Bar();
                }
            }
    
            public static void Bar()
            {
                using (Log.DebugCall())
                {
                    Log.Debug("This object's type is ", typeof(Helper));
                }
            }
        }
    }

    五、输出格式

    格式 Logger 属性 初始化的值 其他继承类的初始化值
    Binary file BinaryFileTraceLevel TraceLevel.Info TraceLevel.Inherited
    Text file TextFileTraceLevel TraceLevel.Off TraceLevel.Inherited
    Console (i.e., command window) ConsoleTraceLevel TraceLevel.Off TraceLevel.Inherited
    Trace.WriteLine() DebugTraceLevel TraceLevel.Off TraceLevel.Inherited
    Event log EventLogTraceLevel TraceLevel.Off TraceLevel.Inherited
    Event handler EventHandlerTraceLevel TraceLevel.Off TraceLevel.Inherited

    六、更多

    http://tracerx.codeplex.com/releases/view/55264

    七、下载demo及源代码

    http://download-codeplex.sec.s-msft.com/Download/Release?ProjectName=tracerx&DownloadId=164854&FileTime=130106418982770000&Build=20865

  • 相关阅读:
    SharePoint Portal Server与SharePoint Services之间的关系
    配置Microsoft Visual SourceSafe 2005的局域网/Internet访
    Maven创建Web项目(idea)
    Maven入门(idea)
    Windows下搭建Vue脚手架CLI
    关于wince中的全屏显示
    ubuntu右键添加打开终端的快捷菜单[转]
    将CString转换成string ...
    090606日记
    Java中的InputStream和OutputStream
  • 原文地址:https://www.cnblogs.com/humble/p/3538947.html
Copyright © 2011-2022 走看看