一、log4net常用节点介绍
节点名称 | 说明 |
appender | type=RollingFileAppender 的意思是将日志以回滚文件的形式写到文件中 |
file | 文件写入位置 |
appendToFile | 是否追加到文件 |
maximumFileSize |
最大的文件大小。我们可以使用"KB", "MB" 或 "GB"为 MaxFileSize 作为后缀限定大小。默认的文件大小是10MB。 rollingStyle="Size" 时才有效。 |
RollingStyle |
是文件创建的方式。上例中市设置为以Date方式创建新文件 |
DatePattern |
日期格式,当我们设置了RollingStyle 为Date方式后,Log4Net会自动使用DatePattern 中的日期格式来创建新的日志文件 |
MaxSizeRollBackups |
当日志文件达到MaxFileSize大小,就自动创建备份文件。备份文件的多少由MaxSizeRollBackups决定。比如说,我们是以日期格式作为日志文件名的,假设今天是2013-10-28,那么今天创建的日志文件名就是20131028.log,当这个文件中要超过MaxFileSize的时候,Log4Net就自动将老的20131028.log改名为20131028.log.1,并创建一个新的20131028.log文件 rollingStyle="Size" 时才有效 |
StaticLogFileName |
是否采用静态文件名。因为我们这个例子是采用以日期作为文件名,每天的日志文件的名字都是动态的,所以上例中为false。如果采用静态文件名,那么日志文件的名字就是唯一确定的。可以参考下面的配置文件进行设置。下面的配置文件中就是采用静态文件名,生成的日志文件名都是log.txt |
二、安装log4net及配置
- 使用nuget 安装 或者 下载 log4net 文件,然后添加引用。
- 在webconfig 中添加配置节点或者单独一个log4net.config 文件。如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> </configSections> <log4net> <!--按照日期创建文件夹,并生成日志文件--> <!--<appender name="LogFileAppender" type="log4net.Appender.FileAppender"> <file type="log4net.Util.PatternString" value="Logs\%date{yyyy-MM}\%date{yyyy-MM-dd}.log" /> <appendToFile value="true" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} 线程ID:[%t] 日志级别:%-5p %c -描述: %m%n " /> </layout> </appender>--> <!--按照日期创建文件夹,并生成日志文件,支持按文件的自定义大小创建多个文件--> <!--<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> <file type="log4net.Util.PatternString" value="Logs\%date{yyyy-MM-dd}\%date{yyyy-MM-dd}.log" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maximumFileSize value="5KB" /> <maxSizeRollBackups value="30" /> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} 线程ID:[%t] 日志级别:%-5p %c -描述: %m%n " /> </layout> </appender>--> <!--按照日期创建文件夹,并生成日志文件--> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="Logs\"/> <appendToFile value="true"/> <!--<maximumFileSize value="5KB" /> <maxSizeRollBackups value="30" />--> <staticLogFileName value="false"/> <rollingStyle value="Date"/> <datePattern value="yyyy-MM\yyyy-MM-dd'.log'"/> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} 线程ID:[%t] 日志级别:%-5p %c -描述: %m%n "/> </layout> </appender> <root> <level value="debug"/> <!--文件形式记录日志--> <appender-ref ref="LogFileAppender"/> </root> </log4net> </configuration>
- 在程序中指定配置
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
或者在Global.asax文件中添加如下配置
log4net.Config.XmlConfigurator.Configure();
或者在初始化log对象时初始化配置信息
public class LoggerManager { private static readonly ILog log = null;
static LoggerManager() { FileInfo file = null; //从指定位置的log4net文件初始化配置 file = HttpContext.Current != null ? new FileInfo(HttpContext.Current.Server.MapPath("~/config/log4net.config")) : new FileInfo(AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"/config/log4net.config"); log4net.Config.XmlConfigurator.ConfigureAndWatch(file); log = log4net.LogManager.GetLogger("LogFileAppender"); }
}