Colour your Log4Net events in your RichTextBox zz
You’re most probably here because you have already read my article How to watch your log through your application in Log4Net and you’re thinking “that’s great, but I need to somehow differentiate all of this output!” – either that or you just really need a handy way to format certain keywords within your RichTextBox.
Either way, here’s my solution. First of all define your logging levels (or keywords) within your RichTextBox container:
Dictionary levels = new Dictionary();
should be defined somewhere within your Form class, probably at the top. This will create a container of key strings that will be your keywords, associated to particular colours that you want these keywords to be coloured within your RichTextBox. Then you need to populate it within your constructor:
// Add colours to correspond to given log levels
levels.Add("INFO", Color.Green);
levels.Add("WARN", Color.Yellow);
levels.Add("ERROR", Color.Red);
levels.Add("DEBUG", Color.Blue);
Next you need to write a function that will iterate through each of these levels/keywords, and search for each instance within your text. Once you’ve found each one you just need to select the word and set the selection colour to the colour that corresponds with that keyword:
private RichTextBox FormatLogColours(RichTextBox textbox) {
// Iterate through each level
foreach (var level in levels) {
int pos = 0;
// And look for every instance of it within our text
while ((pos = textbox.Text.IndexOf(level.Key, pos)) > 0) {
// Then select the text by getting the position and selecting from the position for the length of said level
textbox.Select(pos, level.Key.Length);
// And then set the corresponding colour
textbox.SelectionColor = level.Value;
pos++;
}
}
return textbox;
}
Once you have this function defined you can essentially use it anywhere relevant. In the case of our previous article this would be write after our RichTextBox is updated by our LogWatcher event:
LogTextbox = FormatLogColours(LogTextbox);
Nice and simple! I hope this helps someone, even if it’s somewhere to start – you could easily expand it to cover all of the remaining levels, the ones used here are just the ones I used myself but there are many more or you could even expand it to the enter line by looking for the \r\n prior and after the current keyword. If you think of anything good please feel free to add a link in the comments below!
Colour your Log4Net events in your RichTextBox zz的更多相关文章
- log4net封装类 zz
封装说明: 1.使用静态方法调用即可写入日志. 2.在日志信息写入之前,定义委托处理日志信息,便于记录日志信息之前,显示给用户. 3.添加代码配置Log4net,避免应用程序总是携带配置文件.如果需要 ...
- Linux服务器init 5启动图形界面,报错Retrigger failed udev events的解决方法
1.开启linux系统的桌面环境,使用startx未成功,报如下错误: 提示:Retrigger failed udev events [root@ /]# startx xauth: creatin ...
- log4net RemotingAppender 的配置
Before you even start trying any of the alternatives provided, ask yourself whether you really need ...
- log4net的各种Appender配置示例
Apache log4net™ Config Examples Overview This document presents example configurations for the built ...
- Log4net 日志使用介绍
概述 Log4net 有三个主要组件:loggers,appenders 和 layouts.这三个组件一起工作使得开发者能够根据信息类型和等级(Level)记录信息,以及在运行时控制信息的格式化和信 ...
- log4net 发布到生产环境不写日志的解决方法--使用 NLog日志
1.升级到log4net的最新版 PM下执行 Install-Package log4net 还是无法解决的,使用下面的方法 2.使用Nlog替换之,详见https://github.com/NLog ...
- log4net Tutorial
Introduction One of the greatest logging tools out there for .NET is log4net. This software is the g ...
- How to do logging in C# with log4net
If you are writing server code in C# or to a lesser extent desktop/client then it's a good idea to i ...
- Log4Net 手册
首先感慨下,现在的程序员做的工作因为高级语言的生产力,系统框架模式的成熟,开源大牛的贡献,已经成越来越偏向 “面向配置编程”了...... 详细使用指南见文章:http://blog.csdn.net ...
随机推荐
- 第17条:实现description方法
自定义类需要自己覆写description方法,否则打印信息时就会调用NSObject类所实现的默认方法.(如果不覆写,只会输出类名和对象的内存地址的信息,这只有在判断两个指针是否指向同一对象时才有用 ...
- hibernate3.0 org.dom4j.DocumentException: Connection timed out: connect Nested exception:
hibernate3.0 org.dom4j.DocumentException: Connection timed out: connect Nested exception: 所报异常: 严重 ...
- UVA 10881 Piotr's Ants(等效变换 sort结构体排序)
Piotr's AntsTime Limit: 2 seconds Piotr likes playing with ants. He has n of them on a horizontal po ...
- (LightOJ 1030)期望dp
You are x N grid. Each cell of the cave can contain any amount of gold. Initially you are . Now each ...
- SQL的经典操作——批量复制同行的其它列数据到其它列数据
看图说话比较直观: 对比复制前后的数据表: 使用SQL语句:UPDATE OR ROLLBACK Content SET YINBIAO = YINBIAO2, GESHU = GESHU2 WHER ...
- 九度OJ 1202 排序 -- 堆排序
题目地址:http://ac.jobdu.com/problem.php?pid=1202 题目描述: 对输入的n个数进行排序并输出. 输入: 输入的第一行包括一个整数n(1<=n<=10 ...
- 《C语言学习笔记》指针数组及其应用
C语言中,最灵活但又容易出错的莫过于指针了.而指针数组,是在C中很常见的一个应用.指针数组的意思是说,这个数组存储的所有对象都为指针.除了存储对象为指针,即一个地址外,其它操作和普通数组完全一样. # ...
- jquery 缓冲加载图片插件 jquery.lazyload
第一:加入jquery 第二:加入jquery.lazy.load.js文件 第三:在网页中加<script> $(document).ready(function(){ $(" ...
- dom三个事件
1,页面加载后 window.onload=function(){}; 2,页面(关闭)卸载后触发 window.onunload=function(){}; 3,页面关闭前触发 window.onb ...
- 斗地主你什么时候才会托管?(.NET中的托管于非托管)
文章部分引自<.NET4.0面向对象编程漫谈(基础篇)>第1章.NET面向对象编程基础(作者:金旭亮) 无意间看到一位四五岁左右小朋友在玩斗地主,总开始到结束,她一直都在使用“提示”(托管 ...