Log4net输出信息到RichTextBox

 

昨晚上传查看了下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,内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>
  <log4net>
    <root>
      <level value="ALL" />
      <appender-ref ref="LogFileAppender" />
    </root>

    <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d %-5p [%c:%L]:%m%n" />
      </layout>
    </appender>
  </log4net>
</configuration>



2)在你的工程下的Properties下的AssemblyInfo.cs最下面一行添加代码:

// 添加log4net日志支持
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]

C:我在form的onLoad事件中添加了如下测试代码:
// test for log4net
ILog 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" >
即可。。

经过昨晚的查看资料和今天的测试发现,没有那么复杂。。


 

你可能感兴趣的:(properties,测试,assembly,WinForm,encoding,log4net)