将Log4net 写入数据库的草做,也很见单,主要是对配置文件的操作
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<log4net>
<!--定义输出到文件中-->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<!--定义文件存放位置-->
<file value="D:/log4netfile.txt"/>
<!--是否在文件中追加日志信息-->
<appendToFile value="true"/>
<!--文件输出以日期方式滚动-->
<rollingStyle value="Date"/>
<!--日志文件名以输出日期命名,可更改其他日期方式-->
<datePattern value="yyyyMMdd-HH:mm:ss"/>
<!--表明输出的日志信息是否一直在同一文件中-->
<staticLogFileName value="false"></staticLogFileName>
<layout type="log4net.Layout.PatternLayout">
<!--每条日志末尾的文字说明-->
<footer value="by D %newline"/>
<!--输出格式-->
<!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info-->
<conversionPattern value="%newline记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline"/>
</layout>
</appender>-->
<!--定义输出到数据库中-->
<appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">
<!--缓存个数,意思是累计到多少条数据,才将数据写入数据库,一般给0,如果不写,数据将不法写入数据库-->
<bufferSize value="0"/>
<!--引用数据库 sql2008版本的-->
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<!--连接数据库字符串-->
<connectionString value="data source=.;initial catalog=test;integrated security=false;persist security info=True;User ID=sa;Password=123456;"/>
<commandText value="INSERT INTO Sys_Log ([LogDate],[Thread],[Levels],[Logger],[Message]) VALUES (@log_date,@thread,@log_level,@logger,@message)"/>
<!--定义参数-->
<parameter>
<parameterName value="@log_date"/>
<dbType value="DateTime"/>
<layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}"/>
</parameter>
<parameter>
<parameterName value="@thread"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout" value="%thread"/>
</parameter>
<parameter>
<parameterName value="@log_level"/>
<dbType value="String"/>
<size value="50"/>
<layout type="log4net.Layout.PatternLayout" value="%level"/>
</parameter>
<parameter>
<parameterName value="@logger"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout" value="%logger"/>
</parameter>
<parameter>
<parameterName value="@message"/>
<dbType value="String"/>
<size value="4000"/>
<layout type="log4net.Layout.PatternLayout" value="%message"/>
</parameter>
</appender>
<!--定义日志的输出媒介,下面定义日志以四种方式输出。
也可以下面的按照一种类型或其他类型输出。-->
<!--这里的ALL是代表全部属性-->
<root>
<level value="ALL"/>
<!-- 数据库日志 -->
<appender-ref ref="AdoNetAppender_SqlServer"/>
<!-- 文件形式记录日志 -->
<appender-ref ref="LogFileAppender"/>
</root>
</log4net>
在这个配置文件中,写了两个输出,一个是对数据库,一个是对文件的,都在最后的All里面
//2.添加下面这句
[assembly: log4net.Config.XmlConfigurator(Watch = true,ConfigFile="web.config")]
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
#region 3.写日志
//创建日志记录组件实例
//这里要注意,应为在配置文件中有没有写具体的文件属性
ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
//ILog log = log4net.LogManager.GetLogger(typeof(_Default));
//记录严重错误
log.Fatal("fatal", new Exception("发生了一个致命错误"));
//记录错误日志
log.Error("error", new Exception("发生了一个异常"));
//记录一般信息
log.Info("info");
//记录调试信息
log.Debug("debug");
//记录警告信息
log.Warn("warn");
#endregion
}
}
还有一点就是补充一下另外两个两个输出方式
<!--定义输出到控制台命令行中-->
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<!--定义输出到windows事件中-->
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
也是写在配置文件中,跟文件输出的样式相同,
最后附上我写的代码http://pan.baidu.com/s/1dFMIyOD