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) 收藏 举报
浙公网安备 33010602011771号