作者:小嫣师妹 | 来源:互联网 | 2023-09-02 09:43
1.定义日志记录类1:publicclassLog4NetLogger:ISystemLogger2:{3:staticlog4net.ILogsecurityLogger
1.定义日志记录类
1: public class Log4NetLogger : ISystemLogger
2: {
3: static log4net.ILog securityLogger = log4net.LogManager.GetLogger("SecurityLog");
4: static log4net.ILog sysLogger = log4net.LogManager.GetLogger("SystemLog");
5:
6: public SystemLogLevel LogLevel
7: {
8: get
9: {
10: if (ApplicationManager.SystemInfo.SystemLogLevel.HasValue)
11: {
12: return (SystemLogLevel)ApplicationManager.SystemInfo.SystemLogLevel;
13: }
14: else
15: {
16: return SystemLogLevel.None;
17: }
18: }
19: set
20: {
21: ApplicationManager.UpdateLogLevel(value);
22: }
23: }
24:
25: ///
26: /// 输出错误级别日志
27: ///
28: /// 输出的消息
29: public void Error(string message)
30: {
31: //记录日志
32: writeSysLog(SystemLogLevel.Error, message);
33: }
34:
35: ///
36: /// 输出警告级别日志
37: ///
38: /// 输出的消息
39: public void Warning(string message)
40: {
41: //记录日志
42: writeSysLog(SystemLogLevel.Warning, message);
43: }
44:
45: ///
46: /// 输出信息级别日志
47: ///
48: /// 输出的消息
49: public void Info(string message)
50: {
51: //记录日志
52: writeSysLog(SystemLogLevel.Info, message);
53: }
54:
55: ///
56: /// 输出调试级别日志
57: ///
58: /// 输出的消息
59: public void Debug(string message)
60: {
61: //记录日志
62: writeSysLog(SystemLogLevel.Debug, message);
63: }
64:
65: ///
66: /// 记录个资法案日志
67: ///
68: public void SecurityLog(string message)
69: {
70: writeSecurityLog(message);
71: }
72:
73: ///
74: /// 记录系统日志
75: ///
76: /// 日志级别
77: /// 输出的消息
78: private void writeSysLog(SystemLogLevel logLevel, string message)
79: {
80: string format = "ClientIP={0},CurrentUser={1},Message={2}";
81: ClientInfo clientInfo = WebServerHelper.CurrentClientInfo;
82: string fullMsg = string.Format(format, clientInfo.UserHostAddress, WebServerHelper.CurrentUserID, message);
83: if (LogLevel >= logLevel)
84: {
85: switch (logLevel)
86: {
87: case SystemLogLevel.Debug:
88: sysLogger.Debug(fullMsg);
89: break;
90: case SystemLogLevel.Error:
91: sysLogger.Error(fullMsg);
92: break;
93: case SystemLogLevel.Info:
94: sysLogger.Info(fullMsg);
95: break;
96: case SystemLogLevel.Warning:
97: sysLogger.Warn(fullMsg);
98: break;
99: }
100: }
101: }
102: ///
103: /// 记录个资法案日志
104: ///
105: ///
106: private void writeSecurityLog(string message)
107: {
108: string format = "ClientIP={0},CurrentUser={1},System={2},Message={3}";
109: ClientInfo clientInfo = WebServerHelper.CurrentClientInfo;
110: string fullMsg = string.Format(format, clientInfo.UserHostAddress, WebServerHelper.CurrentUserID,ApplicationManager.SystemCode, message);
111: securityLogger.Info(fullMsg);
112: }
113: }
2.设置配制文件:
1: <configSections>
2: <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
3: configSections>
4: <log4net>
5: <appender name="SystemLogAppender" type="log4net.Appender.RollingFileAppender">
6: <file value="OA_Log/App_Log/" />
7: <appendToFile value="true" />
8: <rollingStyle value="Date" />
9: <staticLogFileName value="false" />
10: <datePattern value="yyyyMMdd".log"" />
11: <layout type="log4net.Layout.PatternLayout">
12:
13: <conversionPattern value="%date %-5level %message%newline" />
14: layout>
15: <filter type="log4net.Filter.LoggerMatchFilter">
16: <loggerToMatch value="SystemLog" />
17: filter>
18: <filter type="log4net.Filter.DenyAllFilter" />
19: appender>
20: <appender name="SecurityLogAppender" type="log4net.Appender.RollingFileAppender">
21: <file value="OA_Log/Access_Log/" />
22: <appendToFile value="true" />
23: <rollingStyle value="Date" />
24: <staticLogFileName value="false" />
25: <datePattern value="yyyyMMdd".log"" />
26: <layout type="log4net.Layout.PatternLayout">
27:
28: <conversionPattern value="%date %-5level %message%newline" />
29: layout>
30: <filter type="log4net.Filter.LoggerMatchFilter">
31: <loggerToMatch value="SecurityLog" />
32: filter>
33: <filter type="log4net.Filter.DenyAllFilter" />
34: appender>
35: <root>
36: <level value="ALL"/>
37: <appender-ref ref="SystemLogAppender"/>
38: <appender-ref ref="SecurityLogAppender"/>
39: root>
40: log4net>
3.在Global.asax的Application_Start事件中加入初始化代码:
1: protected void Application_Start(object sender, EventArgs e)
2: {
3: log4net.Config.XmlConfigurator.Configure();
4: }