一、介绍

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

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

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

二、日志查看器

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

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!");
}
}
}

看看日志查看器的效果

对于初始化

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

Moon转告给你一个比Log4net更好日志框架--TracerX Logger 及其对应的日志查看器的更多相关文章

  1. SLF4J其实只是一个门面服务而已,他并不是真正的日志框架,真正的日志的输出相关的实现还是要依赖Log4j、logback等日志框架的。

    小结: 1.加层: 每一种日志框架都有自己单独的API,要使用对应的框架就要使用其对应的API,这就大大的增加应用程序代码对于日志框架的耦合性. 为了解决这个问题,就是在日志框架和应用程序之间架设一个 ...

  2. 使用FormatMessage函数编写一个内核错误码查看器

    在编写驱动程序的时候,常用的一个结构是NTSTATUS,它来表示操作是否成功,但是对于失败的情况它的返回码过多,不可能记住所有的情况,应用层有一个GetLastError函数,根据这个函数的返回值可以 ...

  3. 什么?让每一个开源项目更安全?啊?还有IDE工具?难道是它?

    背景 入编程界6年来,大大小小的安全漏洞是真滴听了不少,xxx通过日志入侵了,xxxx通过请求入侵了,等等等等. 近期fastJson又报安全漏洞,敢巧自己又"被"跳槽到了新公司, ...

  4. 推荐一个比HtmlWebpackPlugin更灵活的插件

    插件:html-res-webpack-plugin https://github.com/lcxfs1991/html-res-webpack-plugin/blob/v3/README_ZH.md ...

  5. [.Net MVC] 使用 log4net 日志框架

    项目:后台管理平台 意义:项目开发中提出增加日志功能,对关键的操作.程序运行中的错误信息进行记录,这对程序部署后的调试有很大意义. 注:本文只是对网上搜集的信息进行了整合,以备今后查询. 关键字:.N ...

  6. 一个简单好用的日志框架NLog

    之前我介绍过如何使用log4net来记录日志,但最近喜欢上了另一个简单好用的日志框架NLog. 关于NLog和log4net的比较这里就不多讨论了,感兴趣的朋友可以参看.NET日志工具介绍和log4n ...

  7. 收藏收藏:时隔一年,你关注的打造一个实用的TXT文本操作及日志框架,我们开源了,不再为程序写日志发愁(也支持.net core哦)

    记得做这个框架是在2018年刚接触.net core的时候,那个时候为了能够专心的研究我开始不写博客了,但是学有所成并在公司运用了近一年的时间了,决定回来和各位分享我们所掌握的那星星点点的知识,希望可 ...

  8. 如何创建一个简单的C++同步锁框架(译)

    翻译自codeproject上面的一篇文章,题目是:如何创建一个简单的c++同步锁框架 目录 介绍 背景 临界区 & 互斥 & 信号 临界区 互斥 信号 更多信息 建立锁框架的目的 B ...

  9. 基于jQuery的一个简单的图片查看器

    项目中自己diy了一个图片查看器.因为初始代码不是自己的,只是在上面改了一下也没有弄的很漂亮.等以后有时间了在重写一下样式和封装,作为备用的只是积累吧.如果有童鞋有用到,完全可以在此基础上改,比较容易 ...

随机推荐

  1. java 多线程(synchronized)

    package com.example; public class App { public static void main(String[] args) { doRunable dr = new ...

  2. 前端自动化测试工具doh学习总结(二)

    一.robot简介 robot是dojo框架中用来进行前端自动化测试的工具,doh主要目的在于单元测试,而robot可以用来模仿用户操作来测试UI.总所周知,Selenium也是一款比较流行的前端自动 ...

  3. 备忘: Install MODI for use with Microsoft Office 201x

    简介 Microsoft Office 2010 中删除了 Microsoft Office Document Imaging (MODI).本文提供了在计算机上安装 MODI 的步骤,还说明了重新获 ...

  4. 在设置代理的环境下使用SharePoint CSOM

    SharePoint 的CSOM都是通过HttpRequest来实现和SharePoint服务器的交互的,那么我们如何设置HttpWebRequest的一些特性呢,如Cookie,WebProxy? ...

  5. Flash AS实现时钟效果(全脚本实现)

    最近工作中用到个Flash效果,好久没有写FlashAS脚本了,就想从以前写的代码中找一些实例.竟然看到硬盘中还留有若干年前的代码. 这个时钟效果是全部采用脚本实现,图形也是用脚本绘制的.写于2005 ...

  6. underscore源码阅读记录

    这几天有大神推荐读underscore源码,趁着项目测试的空白时间,看了一下. 整个underscore包括了常用的工具函数,下面以1.3.3源码为例分析一下. _.size = function(o ...

  7. EF架构~为分组添加位运算聚合方法

    回到目录 我们知道在Linq里的分组groupby可以对集合中一个或者多个字段进行分组,并对其中一个属性进行聚合,而Linq为我们提供了多种聚合方法,由aver,sum,count等,而在大叔权限体系 ...

  8. Atitti knn实现的具体四个距离算法 欧氏距离、余弦距离、汉明距离、曼哈顿距离

    Atitti knn实现的具体四个距离算法  欧氏距离.余弦距离.汉明距离.曼哈顿距离 1. Knn算法实质就是相似度的关系1 1.1. 文本相似度计算在信息检索.数据挖掘.机器翻译.文档复制检测等领 ...

  9. KnockoutJS 3.X API 第四章 数据绑定(5) 控制流component绑定

    本节目录: 一个例子 API 备注1:仅模板式的component 备注2:component虚拟绑定 备注3:传递标记到component绑定 内存管理 一个例子 First instance, w ...

  10. noip 2016提高组D2T1 problem

    我们可以先预处理一下组合数模K的值,然后我们可以发现对于答案ji[n][m],可以发现递推式ji[i][j]=ji[i-1][j]+ji[i][j-1]-ji[i-1][j-1]并对于Cij是否%k等 ...