log4net.config 将日记同时写入到数据库和文件当中

《1》

1》在项目中新建新建1个log4net.config的配置文件。

2》从log4net官网下面log4net的文件包,然后在包的bin文件夹下的net文件夹中的4.0文件夹中找到log4net.dll文件,然后将它引入到我们的项目中来

<?xml version="1.0" encoding="utf⑻"?>
<configuration>

<configSections>
<!–配置1个结点 名称为log4net–>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>

<log4net>
<!–写入到文件–>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">

<!–文件路径,如果RollingStyle为Composite或Date,则这里设置为目录,文件名在DatePattern里设置,其他则这里要有文件名。已扩大支持虚拟目录–>
<param name="File" value="LogLogInfo" /><!–将日记写入到跟目录下面的Log文件夹下面的LogInfo文件夹下面的yyyy-MM-dd.TXT文件中–>

<param name="AppendToFile" value="true" />

<param name="MaxSizeRollBackups" value="100" />

<param name="MaximumFileSize" value="10240KB" />

<param name="StaticLogFileName" value="false" />

<param name="RollingStyle" value="Date" />

<param name="DatePattern" value="yyyy-MM-dd.TXT" /> <!–TXT后缀必须是大写的,否则有问题–>

<param name="CountDirection" value="⑴" />

<!–log4net记录毛病的格式(即:用甚么样的格式(布局)来记录毛病)–>

<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value=" 【时间】:%d%n 【级别】:%p%n 【类名】:%c%n 【线程ID】: %thread %n 【文件地址】:%F 第%L行%n 【日志内容】:%m%n 【日记详细】:%exception %n—————————————————————————————————————%n" />
</layout>
</appender>

<!–将日记写入数据库–>

<appender name="ADONetAppender_SqlServer" type="log4net.Appender.ADONetAppender">
<bufferSize value="0" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<!–<connectionString value="SERVER=FB-VAIO;DATABASE=sales;UID=sa;PWD=123456;Connect Timeout=15;" />–>
<connectionString value="Data Source=FB-VAIO;Initial Catalog=sales;Integrated Security=SSPI;Connect Timeout=15;" />
<commandText value="INSERT INTO xlog ([Date],[Thread],[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="%t"/>
</layout>
</parameter>

<parameter>
<parameterName value="@log_level"/>
<dbType value="String"/>
<size value="50"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%p"/>
</layout>
</parameter>

<parameter>
<parameterName value="@logger"/>
<dbType value="String"/>
<size value="50"/>
<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="%m"/>
</layout>
</parameter>

<parameter>
<parameterName value="@exception"/>
<dbType value="String"/>
<size value="2000"/>
<layout type="log4net.Layout.ExceptionLayout">
<conversionPattern value="%exception"/>
</layout>
</parameter>
</appender>

<!–在出现甚么级别的毛病才记录毛病 【注意:如果有多个appender-ref的时候,应当给他们放到同1个root节点下】–>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender"/>
<appender-ref ref="ADONetAppender_SqlServer"/>
</root>

</log4net>
</configuration>

如果项目是webForm利用程序,那末可以在根目录下找到Properties文件下面的AssemblyInfo.cs类。打开它,AssemblyInfo.cs类的最后面添加1段代码:以下:

//ConfigFile="log4net.config"表示:我们配置文件的路径为网站根目录下的mylognet4.config这个配置文件,这样程序运行的时候就会依照这个路径来读取这个配置文件
//Watch:log4net框架用这个属性来肯定是不是需要在运行时监视文件的改变,如果这个属性为true,那末FilsSystemWatcher将会被用来监视文件的改变,重命名,删除等事件。(即:如果这个配置文件产生变化的时候它是不是自适应这个变化,也就是说它会自动的去读取这个变化,而不需要重新启动这个正在运行的这个web利用程序)

//其实如果我们吧log4net的配置文件直接配置在web.config文件里,这里就不需要在配置了。这里之所以需要配置是由于我们是独立建立的1个log4net配置文件,为了让它与我们的程序关联起来,在这里,需要对我们建立的log4net配置文件进行读取,加载到我们的程序当中

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

那如果项目不是webForm利用程序,或项目中没有AssemblyInfo.cs这个类,怎样办呢? 答:那我们可以在项目跟目录下创建1个Global.asax文件

在Global.asax文件的protected void Application_Start(object sender, EventArgs e)方法中添加1段代码,代码以下:

protected void Application_Start(object sender, EventArgs e)
{
string filePath = Server.MapPath("~/log4net.config");
FileInfo fil = new FileInfo(filePath);

log4net.Config.XmlConfigurator.Configure(fil); //将

//其实以上3句代码可以用下面这1句替换
//log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(Server.MapPath("~/log4net.config")));
}

注意:我们上面的两段代码主要的功能就是将我们新建的log4net.config这个配置文件加载到我们的项目中去(由于我们新建的log4net.config配置文件与我们项目是没有关系的,所以这里需要将它加载到我们的项目中去)如果在AssemblyInfo.cs文件中加载了,就不需要在Global.asax文件里再加载1次了。(根据爱好,二者选其1)

在项目中添加WebForm1.aspx文件,我们拖1个button控件到我们的WebForm1.aspx页面中来,button控件 命名 ”请点击按钮,测试毛病“

双击button控件,给它添加单击事件,代码以下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using log4net;
using System.Reflection;
namespace WebTest
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
int x = 6;
int y = 0;
try
{
int z = x / y;
}
catch (Exception ex)
{
//Getlogger()静态方法,用来检索框架里是不是存在logger对象,如果不存在就创建1个名字为logger的对象
//log4net.ILog log = log4net.LogManager.GetLogger("WebLogger");//这个WebLogger其实就是配置文件中的logger的name属性名称。它代表的是毛病的类名

log4net.ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);//自获得出错的类
if (log.IsErrorEnabled)
{
log.Error("毛病:"+ex.Message,ex);
}
Response.Write("OK");
}
}
}
}

然后我们在数据中新建1个表 命名为 xlog  表结构以下:

好了。现在可以看测试效果了,运行我们的项目。 

点击页面上的按钮。 然后我们再去我们数据库中的xlog表中查看1下数据,发现已有1条毛病日记写入到表中了。

我们再去项目所在的磁盘目录下  ,在项目文件夹下面我们看到生成了1个log文件夹,在log文件夹下面有1个loginfo文件夹,loginfo文件夹下面有1个以当前日期命名的txt文件,这个文件就是我们刚刚生成的毛病日记了。打开看1下:

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » log4net.config 将日记同时写入到数据库和文件当中

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡