lanyue52011 没有最好,努力就好! MVC4 使用log4net把自定义日志信息通过注册拦截器记录访问日志写入数据库

1、通过NuGet 安装log4net

2、添加log4net.config 配置文件

View Code

 

说明:MvcLogApp.CustomLayout 需要修改为日志帮助类命名全名。

 

3、增加拦截器:Log4NetFilterAttribute.cs

View Code

 

4、增加日志帮助类:Log4NetService.cs 

 

View Code

 

 

5、增加调用帮助类:Log4NetHelper.cs

 1 public class Log4NetHelper
 2     {
 3         /// <summary>  
 4         /// 记录系统日志  
 5         /// </summary>  
 6         /// <param name="msgLevel">日志级别</param>  
 7         /// <param name="className">类名称</param>  
 8         /// <param name="funName">方法名</param>  
 9         /// <param name="msg">日志内容</param>  
10         public static void Log(Log4NetService.MsgLevel msgLevel, string className, string funName, string msg)
11         {
12            // LoginUser loginUser = LoginHelper.GetLoginUser();
13             Hashtable parasHashtable = new Hashtable();
14             parasHashtable.Add("UserId", "sadfasdf"); //form表单提交的数据  
15             parasHashtable.Add("IP", GetIp()); //Url 参数  
16             parasHashtable.Add("FunName", funName);
17             Log4NetService.Instance.Log(msgLevel, className, parasHashtable, msg);
18         }
19         /// <summary>  
20         /// 获取当前操作用户编号  
21         /// </summary>  
22         /// <returns></returns>  
23         private static string GetUserId()
24         {
25             string account = string.Empty;
26             try
27             {
28                 account = "username"; //这里尽可替换,根据你的程序修改相关代码获取当前登录的用户账号  
29             }
30             catch
31             {
32                 account = "未登录";// string.Empty;  
33             }
34             finally
35             {
36 
37             }
38             return account;
39         }
40         /// <summary>  
41         /// 获取当前操作用户IP  
42         /// </summary>  
43         /// <returns></returns>  
44         private static string GetIp()
45         {
46             return System.Web.HttpContext.Current.Request.UserHostAddress;
47         }
48     } 

 

 

6、注册拦截器:在Global 文件中添加方法

 1 public class MvcApplication : System.Web.HttpApplication
 2     {
 3         protected void Application_Start()
 4         {
 5 
 6             string l4net = Server.MapPath("~/log4net.config");
 7             log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(l4net));  
 8 
 9             AreaRegistration.RegisterAllAreas();
10 
11             WebApiConfig.Register(GlobalConfiguration.Configuration);
12             FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
13             RouteConfig.RegisterRoutes(RouteTable.Routes);
14             BundleConfig.RegisterBundles(BundleTable.Bundles);
15             AuthConfig.RegisterAuth();
16             RegisterGlobalFilters(GlobalFilters.Filters);  
17         }
18         public static void RegisterGlobalFilters(GlobalFilterCollection filters)
19         {
20            filters.Add(new Log4NetFilterAttribute());
21         } 

 

 

数据库脚本:

 1 CREATE TABLE [dbo].[NEMSLog](
 2 [SystemExceptionId] [int] IDENTITY(1,1) NOT NULL,
 3 [CreateTime] [datetime] NULL,
 4 [Thread] [varchar](240) NULL,
 5 [Level] [varchar](255) NULL,
 6 [Logger] [varchar](255) NULL,
 7 [MethodName] [varchar](255) NULL,
 8 [Message] [varchar](4000) NULL,
 9 [IPAddress] [varchar](255) NULL,
10 [MemberId] [varchar](255) NULL
11 ) ON [PRIMARY]

 示例代码

posted on 2016-11-04 22:40  lanyue52011  阅读(164)  评论(0)    收藏  举报

导航