每做一个新项目,都会用到log4net,但总是忘记如何快速配置。有时在网上搜半天也找不到好的模板,大都在介绍参数的使用,在此做下总结,争取下次用时仅10分钟就可搭建好log4net。
直接上介绍的步骤:
1. 官网下载最新版的log4net。,打开官网,在Binaries类别下,下载最新版的log4net包,点击如下图所示按钮下载:
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里。
4. 在最终执行的项目配置文件里添加log4net配置信息。在app.config或web.config中添加如下面代码中的<configSections>和<log4net>的内容(代码中以黄色背景标识)。
只需在最终执行的项目下添加配置文件就行,因为所有的其他项目或引用的dll都会走同一个入口(可执行项目),所以整个产品就只有一份log4net配置文件即可,在你想写日志的项目里引用log4net.dll,直接创建Logger对象写日志即可,详细操作可参照步骤6。
以下log4net配置信息将会在可执行的项目目录下创建Log文件夹,里面会创建名位:Logs_20150116.txt;Logs_20150116.txt1;Logs_20150116.txt2的日志文件,每个文件最大为10M,不设文件数目上限,日期变化后会重新生成新的日志文件。若需要更详细的的配置信息请参看其他博文,本文不做详细介绍
5. 配置可执行项目的AssemblyInfo.cs文件,以便让log4net的配置信息让所有dll找到。在可执行项目的AssemblyInfo.cs文件中添加如下代码中的最后一行
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,然后直接写日志即可。如下代码:
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。
以上代码中会有带*号的内容,目的是不想把自己的内容公开,用时请替换为你的真实数据。
此博文仅为能快速搭建写日志的平台,有问题随时交流,错误之处欢迎批评指正。