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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM