您的位置:首页 > 运维架构 > 网站架构

在.net网站项目中使用log4net 记录日志到sqlserver 数据库

2013-06-17 17:11 561 查看
1:首先需要到官网上下载dll,这个不难:官方网址为:http://logging.apache.org/log4net/ ,下载后使用vs编译获得log4net.dll。

再次将其引入项目工程,添加引用即可。

2:然后设置项目中的AssemblyInfo.cs文件中添加一行代码,用来指定寻找Web.Config文件中的log4net的配置信息:

[assembly: log4net.Config.XmlConfigurator( ConfigFile="Web.config",Watch=true)]

3: 开始配置web.Config文件:

<configSections>

<section name="log4net" type="System.Configuration.IgnoreSectionHandler"></section>

</configSections>

将上述代码添加到<configuration> 节点下。

4: 配置log4输出方式

</log4net>

<!--定义到保存到文件中-->

<appender name="LogFileAppender" type="log4net.Appender.FileAppender">

<!--定义文件存放位置-->

<file value="D:\log.txt"/>

<appendToFile value="true"/>

<rollingStyle value="Date"/>

<datePattern value="yyyyMMdd-HH:mm:ss"/>

<layout type="log4net.Layout.PatternLayout">

<!--输出格式-->

<conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline"/>

</layout>

</appender>

<!--定义到日志保存到数据库中-->

<appender name="ADONetAppender" type="log4net.Appender.AdoNetAppender">

<bufferSize value="10" />

<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

<connectionString value="DATABASE=DB;SERVER=.;UID=XX;PWD=XXXX;Connect Timeout=15"/>

<commandText value="INSERT INTO SystemLog ([LogDate],[Thread],[Level],[Logger],[Message]) VALUES (@logDate, @thread, @logLevel, @logger,@message)" />

<!--定义各个参数-->

<parameter>

<parameterName value="@logDate" />

<dbType value="String" />

<size value="240" />

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%date" />

</layout>

</parameter>

<parameter>

<parameterName value="@thread" />

<dbType value="String" />

<size value="240" />

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%thread" />

</layout>

</parameter>

<parameter>

<parameterName value="@logLevel" />

<dbType value="String" />

<size value="240" />

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%level" />

</layout>

</parameter>

<parameter>

<parameterName value="@logger" />

<dbType value="String" />

<size value="240" />

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%logger" />

</layout>

</parameter>

<parameter>

<parameterName value="@message" />

<dbType value="String" />

<size value="240" />

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%message" />

</layout>

</parameter>

</appender>

<!--定义日志输出媒介,指定通过何种方式储存日志信息。-->

<root>

<!--文件形式记录日志-->

<!--<appender-ref ref="LogFileAppender" />-->

<!--插入到数据库形式记录日志-->

<appender-ref ref="ADONetAppender"/>

</root>

</log4net>

注意:此处的SystemLog
表在数据库中必须存在。

5:前端界面调用

public partial class Index : System.Web.UI.Page

{

private static log4net.ILog loger =log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);=log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

loger.Info("测试记录日志到数据库。");

}

注意:System.Reflection.MethodBase.GetCurrentMethod().DeclaringType
表示调用记录日志方法的类,如上述的类就是Index。

上述代码可以写到任何事件中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: