最近在学习 log4Net 插件,在博客园找到了好多资料,但是实现起来还是有点麻烦。
现在记录下学习的过程,期间可能加载着借鉴和转载的代码。
1.配置文件的设置:
新建config文件夹下 log4net.config文件,代码如下:
2.数据库Sql语句
USE [Log4Net] GO
SET QUOTED_IDENTIFIER ON GO
SET ANSI_PADDING ON GO
CREATE TABLE [dbo].[ErrorLog](
[nId] [bigint] IDENTITY(1,1) NOT NULL,
[dtDate] [datetime] NOT NULL,
[sThread] [varchar](100) NOT NULL,
[sLevel] [varchar](200) NOT NULL,
[sLogger] [varchar](500) NOT NULL,
[sMessage] [varchar](3000) NOT NULL,
[sException] [varchar](4000) NULL ) ON [PRIMARY]
GO
SET ANSI_PADDING OFF GO
3.AssemblyInfo.cs 文件
添加
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Config\\log4net.config", Watch = false)]
4.FilterConfig.cs
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
//注册错误过滤器
filters.Add(new MyDealExceptionFileAttribute());
}
5.新建MyLogHelper.cs 文件
public class MyLogHelper
{
public static void WriteLog(string txt)
{
ILog log = LogManager.GetLogger("log4netlogger");
log.Error(txt);
}
}
6.新建MyDealExceptionFileAttribute .cs
public class MyDealExceptionFileAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
base.OnException(filterContext); //处理错误消息,将其跳转到一个页面
MyLogHelper.WriteLog(filterContext.Exception.ToString()); //页面跳转到错误页面
filterContext.HttpContext.Response.Redirect("/Error.html");
}
}
6.HomeController.cs 控制器下代码
public ActionResult Index()
{
try
{
int a = 0;
int b2 = 1;
int c = b2 / a;
}
catch (Exception ex)
{
log4net.ILog myLogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
myLogger.Error("错误的测试", ex);
}
return View();
}
7.Global.asax 文件配置
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("config\\log4net.config"));
借鉴URL:
http://kb.cnblogs.com/page/76919/
http://www.cnblogs.com/huanghai223/archive/2012/02/21/2361529.html
http://myx.cnblogs.com/iaxes/articles/Log4net.html