1,下载log4net.dll动态库,然后添加到工程引用。
2,在工程的AssemblyInfo.cs文件中关联配置文件,添加下面一句:
[assembly: log4net.Config.DOMConfigurator(ConfigFile = "log4net.config", Watch= true) ]
3,添加配置文件 log4net.config, 将下面的内容复制到 任意txt文件中,然后重命名为log4net.config,放到程序根目录下:
<?xml version="1.0"?> <configuration> <configSections> <!--添加log4net的配置信息声明--> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <!--log4net详细信息--> <log4net> <!--根日志是所有日志对象的祖先,被其他日志对象继承--> <root> <!-- 级别高低:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF --> <level value="ALL" /> <!--文件形式记录日志 Rolling代表日志可以记录在不止一个文件中;还可以使用控制台或数据库记录日志 --> <appender-ref ref="RollingLogFileAppender" /> </root> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <!--定义文件存放路径,相对于log4net.config的位置--> <param name="File" value="log\" /> <!--是否在文件中追加日志信息--> <param name="AppendToFile" value="true" /> <!--如果一直输出到同一文件中,则不需要下面代码--> <!--文件输出以日期方式滚动--> <param name="RollingStyle" value="Date" /> <!--日志文件名称以输出日期命名,可更改其他日期输出方式--> <datePattern value="yyyyMMdd'.log'" /> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <param name="MaxSizeRollBackups" value="100" /> <!--表明输出的日志信息是否一直在同一文件中--> <param name="StaticLogFileName" value="false" /> <!--备份文件的最大文件数目--> <maxSizeRollBackups value="10" /> <!--日志文件最大尺寸--> <maximumFileSize value="500KB" /> <!--输出格式--> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%n时间:%d 类名:%c 行数:%L 级别:%p%n内容:%m%n" /> </layout> <!--日志输出级别--> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="ALL" /> <levelMax value="FATAL" /> </filter> </appender> </log4net> </configuration>
4,程序实例如下:
public partial class test : System.Web.UI.Page { /// <summary> /// 定义一个静态的日志对象 /// </summary> private static ILog LOG = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected void Page_Load(object sender, EventArgs e) { LOG.Info("这是普通消息"); try { int i = 0; i = 0 / i; } catch(Exception ex) { LOG.Error("执行Page_Load异常", ex); } } }
5,log4net 多个配置文件,写入多个日志文件,多个程序或多个应用程序集同时使用log4net 的解决办法:
(1)添加一个日志类,定义一个静态的Logger对象,然后在静态构造函数中初始化,其他地方直接使用这个对象写日志。
public class Log { static Log() { string sPath = System.Web.HttpContext.Current.Server.MapPath("~/log4net.config"); FileInfo log4NetConfigFile = new FileInfo(sPath); if (log4NetConfigFile == null || !log4NetConfigFile.Exists) throw new Exception("unable to find log file"); log4net.Config.XmlConfigurator.ConfigureAndWatch(log4NetConfigFile); Logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); } /// <summary> /// 日志对象 /// </summary> public static log4net.ILog Logger ; }
这里的关键是使用log4net自带的一个方法:log4net.Config.XmlConfigurator.ConfigureAndWatch
参考网址:http://apache-logging.6191.n7.nabble.com/How-to-use-separate-config-file-for-log4net-td22584.html
wijitha 的回答。
这个就可以定义多个配置文件,每个程序集使用自己的配置文件。
参考文章:
Log4Net使用指南 http://www.cnblogs.com/dragon/archive/2005/03/24/124254.html
Log4Net 使用基本设置 http://blog.sina.com.cn/s/blog_6cb7b8d701011ttj.html