在ASP.NET web 站点中使用log4net(独立的配置文件)的步骤和注意事项:
1 添加log4net.dll的引用
2.创建Config/log4net.config(名字可自定义)文件,其内容请参考 log4net 网站 log4net Manual - Configuration 部分
下面一个文本记录的例子.
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<!--写文件日志-->
<log4net debug="false">
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<param name="File" value="log.txt" />
<param name="datePattern" value="MM-dd HH:mm" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
<appender name="HttpTraceAppender" type="log4net.Appender.ASPNetTraceAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="_LogData\Log.txt" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="10" />
<param name="MaximumFileSize" value="5MB" />
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<!--写SQLSERVER数据库日志-->
<appender name="AdoNetAppender_sqlserver" type="log4net.Appender.AdoNetAppender">
<!--
日志缓存数量,在多少条日志后进行数据库交互
100表示从第1到第101条一起写入数据库,然后重新计算
如果在未满100情况下,会在缓存失效后自动写入
-->
<bufferSize value="0"/>
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089"/>
<connectionString value="data source=(local);initial catalog=freestar;integrated security=false;persist security info=True;User ID=sa;Password=sa"/>
<commandText value="insert into n_sec_log(DATETIME,THREAD,LOG_LEVEL,LOGGER,MESSAGE,EXCEPTION) values (@log_date,@thread,@log_level,@logger,@message,@exception)"/>
<parameter>
<parameterName value="@log_date"/>
<dbType value="DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout"/>
</parameter>
<parameter>
<parameterName value="@thread"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread"/>
</layout>
</parameter>
<parameter>
<parameterName value="@log_level"/>
<dbType value="String"/>
<size value="50"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level"/>
</layout>
</parameter>
<parameter>
<parameterName value="@logger"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger"/>
</layout>
</parameter>
<parameter>
<parameterName value="@message"/>
<dbType value="String"/>
<size value="4000"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message"/>
</layout>
</parameter>
<parameter>
<parameterName value="@exception"/>
<dbType value="String"/>
<size value="2000"/>
<layout type="log4net.Layout.ExceptionLayout"/>
</parameter>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
</configuration>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3.修改global.asax.cs 文件添加以下代码
//添加的第一行
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Config/Log4net.config", Watch = true)]
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
HttpContext current = HttpContext.Current;
string fileName = current.Request.PhysicalApplicationPath + "Config/Log4net.config";
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(fileName));
}
4. 开始写 logger 语句,详情还请参考 log4net 网站
要输出日志, 必须首先得到带有一个别名的logger.
使用以下命令
(C#):
log4net.ILog Logger logger = log4net.LogManager.GetLogger(this.GetType());
(可以直接使用GetType得到当前类名)
之后调用
logger.Info(string message);
logger.Error(string message);
logger.Debug(string message);
即可输出日志.
调试后可查找应用程序根目录下是否已经自动创建log.txt文本文件.以及是否正确输出了日志
注意事项:
需要对日志文件所在的目录设置适当的安全性,以使 ASP.NET 运行帐户可以创建和修改log文件,
此文件在Global的 Application_Start事件后会立即创建(如果不存在的话)。