Log4net输出信息到RichTextBox

本文介绍如何使用Log4Net记录日志,并通过自定义Appender将日志信息输出到指定位置,如RichTextBox控件。文章首先指导如何配置基本的Log4Net环境,随后演示如何扩展Log4Net以满足特定需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

昨晚上传查看了下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" >
即可。。

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


 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值