Log4net是阿帕奇基金会的非常流行的开源日志组件,是log4j的.NET移植版本,至今已经有11年的历史,使用方便并且非常稳定,此外很重要的一点是其和很多开源组件能很好的组合在一起工作,例如NHibernate等。对于以本地日志为主的中小型的项目,Log4net已经足够使用,当然涉及跨平台的大型分布式系统可以选择Elmah等其他日志组件。
在这里,主要介绍log4net的一些关键知识点,详细内容可见以下链接:
- 官方配置文档:http://logging.apache.org/log4net/release/config-examples.html
- 老博主摩诘在10年前就做了很仔细的解释:http://www.cnblogs.com/dragon/archive/2005/03/24/124254.html
- 博主每日一bo非常仔细的文档:http://www.cnblogs.com/caokai520/p/4387491.html
首先是log4net的四个对象:
- Logger记录器:用于产生日志,包括Fatal、ERROR、WARN、INFO、DEBUG,可以通过设置logger的记录级别进行设置,例如level=INFO,那么除了DEBUG级别的信息,其他FATAL、ERROR、WARN、INFO等级别都将被记录。
- Reposity库:维护日志对象的组织结构,主要用于对框架的扩展,一般使用不用关注。
- Appender附着器:用于设置Log的输出模式,如文件、数据库、邮件等。
- Layout布局:设置日志信息的格式。
其中Appender的选择很多,但最常见的最有实际意义的分别是:
log4net.Appender.RollingFileAppender:通过配置,可以达到日志文件每天以日期新建一个,方便查看,还可以设置日志文件大小,防止侵占硬盘。
log4net.Appender.SmtpAppender:用于FATAL、ERROR等高危级别的日志,直接发邮件给项目责任人,非常的方便有效。
log4net.Appender.AdoNetAppender:和SQL SERVER很紧密的结合,便于将重要日志信息记入数据库,便于查找和备份。
最后,想说的是log4net组件可以通过配置LockingModel设置并发时日志文件锁的模式,使其应用场景得到很大的扩充。
附上一个简单日志配置例子作为参考,具体设置时有什么问题欢迎一起探讨哈,:) :
1 <?xml version="1.0" encoding="utf-8"?> 2 3 <configuration> 4 5 <configSections> 6 7 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 8 9 </configSections> 10 11 <log4net> 12 13 <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 14 15 <layout type="log4net.Layout.PatternLayout"> 16 17 <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline"/> 18 19 </layout> 20 21 </appender> 22 23 <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 24 25 <bufferSize value="100"/> 26 27 <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 28 29 <connectionString value="data source=(localdb)\v11.0;initial catalog=NormalTest;integrated security=false;persist security info=True;User ID=[user];Password=[pwd]"/> 30 31 <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"/> 32 33 <parameter> 34 35 <parameterName value="@log_date"/> 36 37 <dbType value="DateTime"/> 38 39 <layout type="log4net.Layout.RawTimeStampLayout"/> 40 41 </parameter> 42 43 <parameter> 44 45 <parameterName value="@thread"/> 46 47 <dbType value="String"/> 48 49 <size value="255"/> 50 51 <layout type="log4net.Layout.PatternLayout"> 52 53 <conversionPattern value="%thread"/> 54 55 </layout> 56 57 </parameter> 58 59 <parameter> 60 61 <parameterName value="@log_level"/> 62 63 <dbType value="String"/> 64 65 <size value="50"/> 66 67 <layout type="log4net.Layout.PatternLayout"> 68 69 <conversionPattern value="%level"/> 70 71 </layout> 72 73 </parameter> 74 75 <parameter> 76 77 <parameterName value="@logger"/> 78 79 <dbType value="String"/> 80 81 <size value="255"/> 82 83 <layout type="log4net.Layout.PatternLayout"> 84 85 <conversionPattern value="%logger"/> 86 87 </layout> 88 89 </parameter> 90 91 <parameter> 92 93 <parameterName value="@message"/> 94 95 <dbType value="String"/> 96 97 <size value="4000"/> 98 99 <layout type="log4net.Layout.PatternLayout"> 100 101 <conversionPattern value="%message"/> 102 103 </layout> 104 105 </parameter> 106 107 <parameter> 108 109 <parameterName value="@exception"/> 110 111 <dbType value="String"/> 112 113 <size value="2000"/> 114 115 <layout type="log4net.Layout.ExceptionLayout"/> 116 117 </parameter> 118 119 </appender> 120 121 <appender name="Log4Net_INFO" type="log4net.Appender.RollingFileAppender"> 122 123 <file value="C:/log4net/LuceneDemo/info/"/> 124 125 <appendToFile value="true"/> 126 127 <RollingStyle value="Date"/> 128 129 <DatePattern value="yyyyMMdd".log""/> 130 131 <StaticLogFileName value="false"/> 132 133 <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> 134 135 <layout type="log4net.Layout.PatternLayout"> 136 137 <Header value="[Header]"/> 138 139 <Footer value="[Footer]"/> 140 141 <ConversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 信息类:%logger property:[%property{NDC}] - 信息描述:%message%newline"/> 142 143 </layout> 144 145 </appender> 146 147 <root> 148 149 <level value="INFO"/> 150 151 <appender-ref ref="Log4Net_INFO"/> 152 153 <appender-ref ref="AdoNetAppender"/> 154 155 </root> 156 157 </log4net> 158 159 </configuration>
时间: 2024-10-14 22:05:24