一、介绍

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

转载于:https://www.cnblogs.com/humble/p/3538947.html

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

  1. 手把手教你从零写一个日志框架

    点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 Sometimes you have to accept the ...

  2. 动手造轮子:写一个日志框架

    动手造轮子:写一个日志框架 Intro 日志框架有很多,比如 log4net / nlog / serilog / microsoft.extensions.logging 等,如何在切换日志框架的时 ...

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

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

  4. 【React组件】写一个模仿蓝湖的图片查看器

    前言 最近公司让写一个可以自由拖拽放大的图片查看器,我寻思这还不简单,一顿操作猛如虎,俩小时后: 事实证明,一旦涉及到 DOM 的变换操作,如果很多细节考虑不全,抓过来就写,那基本就凉了.于是我仔细分 ...

  5. ​Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机

    ​Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机 Unity中制作一个望远镜 本节制作的望远镜,在鼠标左键按下时,看到的视图会变大:当不再按下的时候,会慢慢缩小成原来的视图.游戏中时常出现 ...

  6. python 日志不会按照日期分割_python日志切割保留一个月

    公司的nginx日志都放在一个文件里,时间长了,日志也变的很大,查起来也很不方便,所以决定将nginx的日志切割下,当然日志切割用shell写更方便,但为了让自己多实践下python,故用python ...

  7. netty web 容器_Netty 实战:如何编写一个麻小俱全的 web 框架

    学习 Netty 也有一段时间了,为了更好的掌握 Netty,我手动造了个轮子,一个基于 Netty 的 web 框架:redant,中文叫红火蚁.创建这个项目的目的主要是学习使用 Netty,俗话说 ...

  8. asp.net core 集成 log4net 日志框架

    asp.net core 集成 log4net 日志框架 Intro 在 asp.net core 中有些日志我们可能想输出到数据库或文件或elasticsearch等,如果不自己去实现一个 Logg ...

  9. log4net 日志框架的配置

    log4net 日志框架的简单配置 添加对log4net程序集的引用 选择程序集文件添加引用即可,需要注意的是需要添加相应程序版本的程序集,如果你的应用是基于.netFramework2.0,则应选择 ...

最新文章

  1. linux c 监控文件内容改变,如何让程序监视C ++中的文件修改?
  2. Opera 60 正式发布,代号 Reborn 3
  3. 【已解决】tomcat启动不成功(点击startup.bat闪退)的解决办法
  4. 究竟是什么可以比反射还快实现动态调用?| Source Generators版
  5. 分库分表的几种常见形式以及可能遇到的难
  6. 安装thinkphp,其实就是下载thinkphp,然后放到网站根目录下就可以直接使用了。
  7. linux中快捷脚本,Linux下Shell编程快捷键大全(日常整理)
  8. sunplus 8202v iop源代码阅读笔记——1
  9. 编程语言的宗教狂热和十字军东征 (转)
  10. 广义SAM(SAM套trie)
  11. 找个免费的天气预报API真难a
  12. 1.2 Unity3D 的注册
  13. Freesurfer recon-all命令详解及使用示例
  14. 如何获取手机根目录和sdcard的根目录
  15. 数据库三类完整性规则
  16. chm文件打开是空白页面,可能是文件被锁定,文件解锁方法
  17. 汽车软件竞争进入“深水区”,诚迈科技如何抢滩?
  18. 用区块链构建可信教育——2020高校区块链技术创新云论坛集锦(1)
  19. 第四代iPod Touch iOS5.1不完美越狱教程
  20. VMP (VMProtect)脱壳

热门文章

  1. html文档支持代码高亮,为HTML中的代码添加语法高亮
  2. oracle adrci purge,adrci中的purge
  3. android获取网络视频缩略图,Android 获取视频(本地和网络)缩略图的解决方案
  4. 机器学习算法中的F值(F-Measure)、准确率(Precision)、召回率(Recall)
  5. 深度学习之基础知识详解
  6. oracle 12c 性能,Oracle 12C 新性能 总结篇
  7. java的super_Java中的Super()
  8. python大神写的代码_【python】抄写大神的糗事百科代码
  9. 一文带你了解 JVM 的垃圾回收机制
  10. Module not found: Error: Can't resolve 'XXX' in 'XXXX'