Moon转告给你一个比Log4net更好日志框架--TracerX Logger 及其对应的日志查看器
一、介绍
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及源代码
Moon转告给你一个比Log4net更好日志框架--TracerX Logger 及其对应的日志查看器的更多相关文章
- SLF4J其实只是一个门面服务而已,他并不是真正的日志框架,真正的日志的输出相关的实现还是要依赖Log4j、logback等日志框架的。
		小结: 1.加层: 每一种日志框架都有自己单独的API,要使用对应的框架就要使用其对应的API,这就大大的增加应用程序代码对于日志框架的耦合性. 为了解决这个问题,就是在日志框架和应用程序之间架设一个 ... 
- 使用FormatMessage函数编写一个内核错误码查看器
		在编写驱动程序的时候,常用的一个结构是NTSTATUS,它来表示操作是否成功,但是对于失败的情况它的返回码过多,不可能记住所有的情况,应用层有一个GetLastError函数,根据这个函数的返回值可以 ... 
- 什么?让每一个开源项目更安全?啊?还有IDE工具?难道是它?
		背景 入编程界6年来,大大小小的安全漏洞是真滴听了不少,xxx通过日志入侵了,xxxx通过请求入侵了,等等等等. 近期fastJson又报安全漏洞,敢巧自己又"被"跳槽到了新公司, ... 
- 推荐一个比HtmlWebpackPlugin更灵活的插件
		插件:html-res-webpack-plugin https://github.com/lcxfs1991/html-res-webpack-plugin/blob/v3/README_ZH.md ... 
- [.Net MVC] 使用 log4net 日志框架
		项目:后台管理平台 意义:项目开发中提出增加日志功能,对关键的操作.程序运行中的错误信息进行记录,这对程序部署后的调试有很大意义. 注:本文只是对网上搜集的信息进行了整合,以备今后查询. 关键字:.N ... 
- 一个简单好用的日志框架NLog
		之前我介绍过如何使用log4net来记录日志,但最近喜欢上了另一个简单好用的日志框架NLog. 关于NLog和log4net的比较这里就不多讨论了,感兴趣的朋友可以参看.NET日志工具介绍和log4n ... 
- 收藏收藏:时隔一年,你关注的打造一个实用的TXT文本操作及日志框架,我们开源了,不再为程序写日志发愁(也支持.net core哦)
		记得做这个框架是在2018年刚接触.net core的时候,那个时候为了能够专心的研究我开始不写博客了,但是学有所成并在公司运用了近一年的时间了,决定回来和各位分享我们所掌握的那星星点点的知识,希望可 ... 
- 如何创建一个简单的C++同步锁框架(译)
		翻译自codeproject上面的一篇文章,题目是:如何创建一个简单的c++同步锁框架 目录 介绍 背景 临界区 & 互斥 & 信号 临界区 互斥 信号 更多信息 建立锁框架的目的 B ... 
- 基于jQuery的一个简单的图片查看器
		项目中自己diy了一个图片查看器.因为初始代码不是自己的,只是在上面改了一下也没有弄的很漂亮.等以后有时间了在重写一下样式和封装,作为备用的只是积累吧.如果有童鞋有用到,完全可以在此基础上改,比较容易 ... 
随机推荐
- 高性能网站架构设计之缓存篇(3)- Redis 的配置
			我们说Redis是一个强大的Key-Value存储系统,在前面我们已遇到了两个问题: 1.redis server 启动后,独占进程,能不能修改为后台服务呢? 2.redis server 服务是单线 ... 
- openfire/spark/asmack 环境调试纪要
			项目需要简单搭建openfire/spark/asmack的环境及程序demo,本文简单记录以免遗忘. 1.openfire/spark 是java编写的xmpp服务器及PC客户端,安装过程相当简单一 ... 
- 设计模式之美:Strategy(策略)
			索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):使用不同的 Strategy 处理内部状态. 别名 Policy 意图 定义一系列的算法,把它们一个个封装起来,并且使它们可以相 ... 
- nodejs获取客户端IP Address
			在网上看见很多问node.js如何获取客户端IP,所以记录下来,以供大家参考. function getClientIp(req) { return req.headers['x-forwarded- ... 
- 浅谈Excel开发:七 Excel 自定义任务窗体
			前面花了三篇文章讲解了Excel中的UDF函数,RTD函数和异步UDF函数,这些都是Excel开发中的重中之重.本文现在开始接着第二篇文章的菜单系统开始讲解Excel中可供开发的界面元素,本文要讲解的 ... 
- java.sql.SQLException: No suitable driver 问题解决
			最近在学习java,用到c3p0数据库连接池,遇到一个很奇怪的现象,用main方法测试是可以正常连接数据库的,但是使用jsp调用代码,就会报如下图的错误! 最下面的java.sql.SQLExcept ... 
- 微软官网下载windows系统有点全
			第一步:访问:https://www.microsoft.com/zh-cn/software-download/windows10ISO/ 默认就只能下载win10,这怎么行呢.巨硬程序员貌似没做服 ... 
- Http基础
			Http基础 这篇文章是讲Android网络请求的先导文章,主要讲Http工作流程,请求报文和响应报文的格式,以及GET和POST方法的具体含义. Http工作流程 HTTP是一个客户端和服务器端请求 ... 
- Redis学习笔记~常用命令总结
			回到目录 客户端redis-cli常用的命令总结 连接到服务器 redis-cli -h 127.0.0.1 -p 6379 --连接指定的redis服务器 发布/订阅, pub/sub模式运行在re ... 
- 锋利的JQuery —— DOM操作
			图片猛戳链接 
