每作一个新项目,都会用到log4net,但老是忘记如何快速配置。有时在网上搜半天也找不到好的模板,大都在介绍参数的使用,在此作下总结,争取下次用时仅10分钟就可搭建好log4net。web
直接上介绍的步骤:apache
1. 官网下载最新版的log4net。http://logging.apache.org/log4net/download_log4net.cgi,打开官网,在Binaries类别下,下载最新版的log4net包,点击以下图所示按钮下载:app
2. 找到所需的log4net版本。下载后,解压缩包,找到本身.net程序所对应的log4net版本,我用的是VisualStudio 2010,项目用的是.netframework 4.0, 因此我用的log4net版本在C:\Users\zhengshuangliang\Downloads\log4net-1.2.13-bin-newkey\log4net-1.2.13\bin\net\4.0\release\框架
3. 选择配置信息存放方式。我喜欢把log4net的配置文件和项目的配置文件(app.config或web.config)放在一块儿,因此我删除了log4net自带的配置文件log4net.xml,而是把配置信息放在app.config或web.config里。ide
4. 在最终执行的项目配置文件里添加log4net配置信息。在app.config或web.config中添加以下面代码中的<configSections>和<log4net>的内容(代码中以黄色背景标识)。工具
只需在最终执行的项目下添加配置文件就行,由于全部的其余项目或引用的dll都会走同一个入口(可执行项目),因此整个产品就只有一份log4net配置文件便可,在你想写日志的项目里引用log4net.dll,直接建立Logger对象写日志便可,详细操做可参照步骤6。ui
如下log4net配置信息将会在可执行的项目目录下建立Log文件夹,里面会建立名位:Logs_20150116.txt;Logs_20150116.txt1;Logs_20150116.txt2的日志文件,每一个文件最大为10M,不设文件数目上限,日期变化后会从新生成新的日志文件。若须要更详细的的配置信息请参看其余博文,本文不作详细介绍this
<?xml version="1.0"?> <configuration> <configSections> <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> </configSections> <appSettings> <add key="RestServicePort" value="8899"/> </appSettings> <log4net> <!--配置日志的级别,低于此级别的就不写到日志里面去OFF、FATAL、ERROR, WARN, INFO, DEBUG, ALL--> <root> <level value="DEBUG" /> <appender-ref ref="LogFileAppender" /> <appender-ref ref="ConsoleAppender" /> </root> <logger name="WebLogger"> <level value="ERROR" /> </logger> <!--输出到文件--> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net"> <param name="File" value="Log/" /> <param name="AppendToFile" value="true" /> <!-- 切割最多文件数 -1表示不限制产生日志文件数--> <param name="MaxSizeRollBackups" value="-1"/> <!-- 每一个文件的大小限制 --> <param name="MaximumFileSize" value="10MB"/> <!-- RollingStyle Composite 综合 Size 按大小 Date 按时间 --> <param name="RollingStyle" value="Composite" /> <param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" /> <param name="StaticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="Header" value="
----------------------application startup--------------------------
" /> <param name="Footer" value="
 ----------------------application shutdown--------------------------
" /> <param name="ConversionPattern" value="%d ThreadId[%t] %-5p %c - (Line:%line) %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ALL" /> <param name="LevelMax" value="OFF" /> </filter> </appender> <!--输出控制台--> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender,log4net"> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d [%t] %-5p %c - (%line) %m%n" /> </layout> </appender> </log4net> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> </configuration>
5. 配置可执行项目的AssemblyInfo.cs文件,以便让log4net的配置信息让全部dll找到。在可执行项目的AssemblyInfo.cs文件中添加以下代码中的最后一行spa
using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("***CentralServiceStartEngine")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("IGT Technology Development (Beijing) Co., Ltd.")] [assembly: AssemblyProduct("***CentralServiceStartEngine")] [assembly: AssemblyCopyright("Copyright ©***, Ltd. 2014")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("7c36bff0-c***-4f43-8be8-3781390c35c7")] // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: log4net.Config.XmlConfigurator(Watch = true)]
6.项目中使用Log4net。把log4net.dll(无需log4net.xml)放在整个项目的Lib工具库里,在须要写日志的项目中引用此log4net.dll文件,首先建立Logger,而后直接写日志便可。以下代码:.net
using System; using System.Collections.Generic; using System.Configuration; using System.Text; using log4net; namespace ***.***.*** { public static class CentralServiceEngine { //CentralServiceEngine将会在日志中体现,为的是更快定位问题 private static ILog _log = LogManager.GetLogger(typeof (CentralServiceEngine)); public static void StartService() { _log.Info("In OnStart IPSCentralService."); _log.Info("Info"); _log.Debug("Debug"); _log.Warn("Warn"); _log.Error("ERROR"); _log.Fatal("Fatal"); } public static void StopService() { _log.Info("In onStop IPSCentralService."); } } }
Build代码若出现找不到log4net命名空间或程序集的错误,则修改下项目的Target Framework(目标框架,在项目->右键属相->Application页签中),从.NET Framework 4 Client Profile 变为.NET Framework 4。
以上代码中会有带*号的内容,目的是不想把本身的内容公开,用时请替换为你的真实数据。
此博文仅为能快速搭建写日志的平台,有问题随时交流,错误之处欢迎批评指正。