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了一个图片查看器.因为初始代码不是自己的,只是在上面改了一下也没有弄的很漂亮.等以后有时间了在重写一下样式和封装,作为备用的只是积累吧.如果有童鞋有用到,完全可以在此基础上改,比较容易 ...
随机推荐
- centos git 服务器搭建
1.安装git sudo yum -y install git 2.创建用户与授权 # 找到 git_shell whereis git_shell /usr/bin/git-shell # 创建 g ...
- apache httpclient cache 实现可缓存的http客户端
这里的cache storage 采用ehcache,而不是默认的内存式的cache storage.采用ehcache可以将内容缓存到磁盘上. maven <dependency> &l ...
- 使用 Productivity Power Tools 高级扩展 来帮助你提高 VS2012 的工作效率
Productivity Power Tools 高级工具是帮助开发者提高工作效率的, 用于 Visual Studio 2012 专业版(及以上) 的一组免费扩展. 本文大多数内容译自MSDN:ht ...
- JavaScript正则表达式下——相关方法
上篇博客JavaScript 正则表达式上——基本语法介绍了JavaScript正则表达式的语法,有了这些基本知识,可以看看正则表达式在JavaScript的应用了,在一切开始之前,看看RegExp实 ...
- 如何在 ASP.NET MVC 中集成 AngularJS(1)
介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术.例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 REST 的 Web API 服务.另外,还有最新的数据库技术.最新 ...
- EF架构~XMLRepository仓储的实现~续(XAttribute方式)
回到目录 之前我写过关于XMLRepository仓储的实现的文章,主要是针对XElement方式的,对于XML的结构,一般来说有两种,一是使用节点方式的,我习惯称为XElement方式,别一种是属性 ...
- DNS正向解析与反向解析
DNS:(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网, 而不去记住能够被机器直接读取的IP数串.通过主机名,最 ...
- iOS ---Extension编程指南
当iOS 8.0和OS X v10.10发布后,一个全新的概念出现在我们眼前,那就是应用扩展.顾名思义,应用扩展允许开发者扩展应用的自定义功能和内容,能够让用户在使用其他app时使用该项功能.你可以开 ...
- android上引入七牛 上传图片或者文件 最终整理版本(可用)
前言: 以下是引入七牛的步骤,以及在七牛中上传文件和获取文件private 私密地址. 生成上传凭证和获取下载凭证 具体如果使用过程有什么疑问可以加QQ(备注:七牛问题). 1:导入相关的包(注意是4 ...
- Javascript学习记录——数组去重
var arr = [1, 2, 3, 5, 5, '45', '45', 4, 1, '1', '2'] for (var i = 0; i < 10000; i++) { arr.push( ...