本文共 1741 字,大约阅读时间需要 5 分钟。
昨晚上传查看了下log4net,因为之前是做java对这个组件的使用比较熟悉,还没扩展过。但是一个小项目需要,实现了对log4net的改写,让log4net输出日志消息到自己想输出的地方。
先说下log4net的使用,再说对log4net重写,实现让日志消息打印到我们想要的地方。1:log4net的使用:A:下载incubating-log4net-1.2.10.zip,解压,找到bin\net\2.0\release\log4net.dll(对于.net framework2.0的平台),让你的winform工程引入这个dll。B:1)在你的winform工程主目录下建立文件App.config,内容如下:2)在你的工程下的Properties下的AssemblyInfo.cs最下面一行添加代码:
// 添加log4net日志支持
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]C:我在form的onLoad事件中添加了如下测试代码:
// test for log4netILog log = LogManager.GetLogger(this.GetType());log.Info("test");D:运行该程序,可以在.exe程序的同级目录下找到文件log-file.txt,内容为text。至此,log4net的简单使用已经ok。2:扩展log4net,让日志输出到我们想要的地方,其实log4net自带了很多输出到不同地方的Appender,但是我这里的需求,系统还是默认没有满足我,我想让日志显示在RichTextBox中,下面看我的改写:
A:建立自己的Log类,继承log4net的AppenderSkeleton类,只需要重载其Append方法即可,下面看代码:using System;using System.IO;using System.Collections.Generic;using System.Text;using log4net.Appender;using log4net.Filter;using log4net.Util;using log4net.Layout;using log4net.Core;namespace PostApplication.core.util{ class Log : AppenderSkeleton { override protected void Append(LoggingEvent loggingEvent) { StringWriter writer = new StringWriter(); this.Layout.Format(writer, loggingEvent); // 已经得到了按照自己设置的格式的日志消息内容了,就是writer.toString()。然后你想把这句话显示在哪都可以了。。我是测试就直接控制台了。 Console.Write(writer.ToString()); } }}
B:修改App.config的<appender name="LogFileAppender" type="log4net.Appender.FileAppender" > 为 <appender name="LogFileAppender" type="PostApplication.core.util.Log" >
即可。。经过昨晚的查看资料和今天的测试发现,没有那么复杂。。
转载地址:http://etini.baihongyu.com/