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及源代码
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 及其对应的日志查看器相关推荐
- 手把手教你从零写一个日志框架
点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 Sometimes you have to accept the ...
- 动手造轮子:写一个日志框架
动手造轮子:写一个日志框架 Intro 日志框架有很多,比如 log4net / nlog / serilog / microsoft.extensions.logging 等,如何在切换日志框架的时 ...
- 一个简单好用的日志框架NLog
之前我介绍过如何使用log4net来记录日志,但最近喜欢上了另一个简单好用的日志框架NLog. 关于NLog和log4net的比较这里就不多讨论了,感兴趣的朋友可以参看.NET日志工具介绍和log4n ...
- 【React组件】写一个模仿蓝湖的图片查看器
前言 最近公司让写一个可以自由拖拽放大的图片查看器,我寻思这还不简单,一顿操作猛如虎,俩小时后: 事实证明,一旦涉及到 DOM 的变换操作,如果很多细节考虑不全,抓过来就写,那基本就凉了.于是我仔细分 ...
- Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机
Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机 Unity中制作一个望远镜 本节制作的望远镜,在鼠标左键按下时,看到的视图会变大:当不再按下的时候,会慢慢缩小成原来的视图.游戏中时常出现 ...
- python 日志不会按照日期分割_python日志切割保留一个月
公司的nginx日志都放在一个文件里,时间长了,日志也变的很大,查起来也很不方便,所以决定将nginx的日志切割下,当然日志切割用shell写更方便,但为了让自己多实践下python,故用python ...
- netty web 容器_Netty 实战:如何编写一个麻小俱全的 web 框架
学习 Netty 也有一段时间了,为了更好的掌握 Netty,我手动造了个轮子,一个基于 Netty 的 web 框架:redant,中文叫红火蚁.创建这个项目的目的主要是学习使用 Netty,俗话说 ...
- asp.net core 集成 log4net 日志框架
asp.net core 集成 log4net 日志框架 Intro 在 asp.net core 中有些日志我们可能想输出到数据库或文件或elasticsearch等,如果不自己去实现一个 Logg ...
- log4net 日志框架的配置
log4net 日志框架的简单配置 添加对log4net程序集的引用 选择程序集文件添加引用即可,需要注意的是需要添加相应程序版本的程序集,如果你的应用是基于.netFramework2.0,则应选择 ...
最新文章
- linux c 监控文件内容改变,如何让程序监视C ++中的文件修改?
- Opera 60 正式发布,代号 Reborn 3
- 【已解决】tomcat启动不成功(点击startup.bat闪退)的解决办法
- 究竟是什么可以比反射还快实现动态调用?| Source Generators版
- 分库分表的几种常见形式以及可能遇到的难
- 安装thinkphp,其实就是下载thinkphp,然后放到网站根目录下就可以直接使用了。
- linux中快捷脚本,Linux下Shell编程快捷键大全(日常整理)
- sunplus 8202v iop源代码阅读笔记——1
- 编程语言的宗教狂热和十字军东征 (转)
- 广义SAM(SAM套trie)
- 找个免费的天气预报API真难a
- 1.2 Unity3D 的注册
- Freesurfer recon-all命令详解及使用示例
- 如何获取手机根目录和sdcard的根目录
- 数据库三类完整性规则
- chm文件打开是空白页面,可能是文件被锁定,文件解锁方法
- 汽车软件竞争进入“深水区”,诚迈科技如何抢滩?
- 用区块链构建可信教育——2020高校区块链技术创新云论坛集锦(1)
- 第四代iPod Touch iOS5.1不完美越狱教程
- VMP (VMProtect)脱壳
热门文章
- html文档支持代码高亮,为HTML中的代码添加语法高亮
- oracle adrci purge,adrci中的purge
- android获取网络视频缩略图,Android 获取视频(本地和网络)缩略图的解决方案
- 机器学习算法中的F值(F-Measure)、准确率(Precision)、召回率(Recall)
- 深度学习之基础知识详解
- oracle 12c 性能,Oracle 12C 新性能 总结篇
- java的super_Java中的Super()
- python大神写的代码_【python】抄写大神的糗事百科代码
- 一文带你了解 JVM 的垃圾回收机制
- Module not found: Error: Can't resolve 'XXX' in 'XXXX'