千家信息网

怎么在.net中使用log4net

发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,小编给大家分享一下怎么在.net中使用log4net,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!创建日志记录步骤第一步,
千家信息网最后更新 2025年11月12日怎么在.net中使用log4net

小编给大家分享一下怎么在.net中使用log4net,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

创建日志记录步骤

第一步,

当然是添加log4net.dll的引用啦

第二步,

在AssemblyInfo.cs文件中添加下面一句话:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)]

这句话的意思是log4net会自动寻找配置文件App.config或Web.config从而获得并加载其中的配置信息。如果想log4net随时监视配置文件以便重新加载的话就要这样写按照上面一样写(winform程序ConfigFile为App.config)。

第三步,

配置Web.config。

                    

上面这段配置取自周公,配置的说明上面已经注释的比较详细了。

第四步,

在程序中记录信息。我们在项目下Default.aspx的Page_Load方法加入如下代码:

//获得log4net实例ILog log = log4net.LogManager.GetLogger("LogFileAppender");log.Info("Default.aspx下面的PageLoad方法被执行");

然后运行项目,可以发现在c:\log4netfile.txt中已经记录了一条日志信息:

记录时间:2011-04-21 21:26:17,729 线程ID:[4] 日志级别:INFO 出错类:LogFileAppender property:[(null)] - 错误描述:Default.aspx下面的PageLoad方法被执行

通过上面这几步我想您已经能够为程序创建一些简单日志记录功能了。下面我们再来详细说说log4net其他的一些使用方法与特点。

log4net详细说明

这里我通过问答的形式来说明log4net的一些应用。

1.log4net总共有几种记录方式,每种方式该如何配置与使用?

Log4net目前支持的输出方式包括:

  • 1 AdoNetAppender
    将日志记录到数据库中。可以采用SQL和存储过程两种方式。

  • 2 AnsiColorTerminalAppender
    在ANSI 窗口终端写下高亮度的日志事件。

  • 3 AspNetTraceAppender
    能用asp.net中Trace的方式查看记录的日志。

  • 4 BufferingForwardingAppender
    在输出到子Appenders之前先缓存日志事件。

  • 5 ConsoleAppender
    将日志输出到控制台。

  • 6 EventLogAppender
    将日志写到Windows Event Log.

  • 7 FileAppender
    将日志写到文件中。

  • 8 LocalSyslogAppender
    将日志写到local syslog service (仅用于UNIX环境下).

  • 9 MemoryAppender
    将日志存到内存缓冲区。

  • 10 NetSendAppender
    将日志输出到Windows Messenger service.这些日志信息将在用户终端的对话框中显示。

  • 11 RemoteSyslogAppender
    通过UDP网络协议将日志写到Remote syslog service。

  • 12 RemotingAppender
    通过.NET Remoting将日志写到远程接收端。

  • 13 RollingFileAppender
    将日志以回滚文件的形式写到文件中。

  • 14 SmtpAppender
    将日志写到邮件中。

  • 15 TraceAppender
    将日志写到.NET trace 系统。

  • 16 UdpAppender
    将日志connectionless UDP datagrams的形式送到远程宿主或以UdpClient的形式广播。

可以看到目前支持的方式还是很多的,我这里调几个认为常用的做个例子。

1.文件的方式我们上面已经讲过了,这里不再做例子了。

2.数据库方式:

首先,添加数据库记录appender

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

然后建立c:log4net.mdb 数据库,并在代码中启用数据库记录方式:

//获得log4net实例ILog log = log4net.LogManager.GetLogger("AdoNetAppender_Access");log.Debug("Default.aspx下面的PageLoad方法被执行");

这样日志就被记录到数据库中了。

2.log4net如何过滤我想要的日志信息,比如一个日志中只记录程序错误日志?

这个需求可以通过配置filter来实现。具体操作如下:

全局方式:

这种方式会将级别应用于所有的日志输入方式。具体操作为在root节点下添加:

这样对于所有的日志记录方式,所有地域ERROR级别的都不会被记录了。

单独配置级别方式:

该方式不会影响其他的日志输入方式。方法如下为,在具体的appender下添加filter:

           

这种方式可以配置记录级别的方位,如果只需要记录一种,则最大和最小设置一样就行了。

3.你上面的日志输出格式我不喜欢,如何在log4net中配置我想要的日志输出格式?

log4net的输入格式定义在每个appender的layout中。具体的有以下内置可选项:

%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息

%n(new line):换行

%d(datetime):输出当前语句运行的时刻

%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数

%t(thread id):当前语句所在的线程ID

%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等

%c(class):当前日志对象的名称,例如:

%f(file):输出语句所在的文件名。

%l(line):输出语句所在的行号。

%数字:表示该项的最小长度,如果不够,则用空格填充,如"%-5level"表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。

通过这些东西,你可以任意组合你喜欢的输出格式内容。

4.有没有方式控制程序自动按日期记录日志信息,即每天的日志都在不同的日志文件中?

其实这种方式对应于一种特定的记录方式:RollingFileAppender。这种方式也是基于文件记录的,不过他提供更加灵活的日志记录方式。具体说来他可以按日志文件的大小或者日志记录的时间进行自动变换日志文件。

按每天不同的日期进行记录分类:

            

按照日志文件的大小进行变换,通过这种方式可以有效降低日志文件体积膨胀的问题:

                

以上是"怎么在.net中使用log4net"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0