热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Log4Net根据不同的Logger名称,生成日志文件到不同的地方。

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: }



推荐阅读
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • 如何在PHP中安装Xdebug扩展
    本文介绍了如何从PECL下载并编译安装Xdebug扩展,以及如何配置PHP和PHPStorm以启用调试功能。 ... [详细]
  • 默认情况下,Git 使用 Nano 编辑器进行提交信息的编辑,但如果您更喜欢使用 Vim,可以通过简单的配置更改来实现这一变化。本文将指导您如何通过修改全局配置文件来设置 Vim 作为默认的 Git 提交编辑器。 ... [详细]
  • 在Notepad++中配置Markdown语法高亮及实时预览功能
    本文详细介绍了如何在Notepad++中配置Markdown语法高亮和实时预览功能,包括必要的插件安装和设置步骤。 ... [详细]
  • 探讨如何在映射文件中处理重复的属性字段,以避免数据操作时出现错误。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • Windows操作系统提供了Encrypting File System (EFS)作为内置的数据加密工具,特别适用于对NTFS分区上的文件和文件夹进行加密处理。本文将详细介绍如何使用EFS加密文件夹,以及加密过程中的注意事项。 ... [详细]
  • 回顾两年前春节期间的一个个人项目,该项目原本计划参加竞赛,但最终作为练习项目完成。独自完成了从编码到UI设计的全部工作,尽管代码量不大,但仍有一定的参考价值。本文将详细介绍该项目的背景、功能及技术实现。 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • 网络流24题——试题库问题
    题目描述:假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算 ... [详细]
  • 利用无代码平台实现高效业务应用开发
    随着市场环境的变化加速,全球企业都在探索更为敏捷的应用开发模式,以便快速响应新兴的商业机遇。然而,传统的软件开发方式不仅成本高昂,而且耗时较长,这往往导致IT与业务部门之间的合作障碍,进而影响项目的成功。本文将探讨如何通过无代码开发平台解决这些问题。 ... [详细]
  • publicclassBindActionextendsActionSupport{privateStringproString;privateStringcitString; ... [详细]
author-avatar
小嫣师妹
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有