分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

log4net VS2012 日志layout自定义,error日志和info日志分别记录到不同文件中

发布时间:2023-09-06 01:45责任编辑:胡小海关键词:暂无标签
  • 打开VS中“工具”=》“NuGet程序包管理器”=》“管理解决方案的NuGet程序包”菜单
  • 在“管理NuGet程序包”窗口中,搜索log4net,并安装
  • 有时候,我们在日志中需要记录一些业务数据,如operator等信息,我们新建一个类WebMethodLog,来存放log里面需要用到的信息
public class WebMethodLog ???{ ???????public string operatorNo{get;set;} ???????public string operatorName { get; set; } ???????public string method { get; set; } ???????public string message { get; set; } ???}
  • 新建WebMethodPatternConvert类
 public class WebMethodPatternConvert : PatternLayoutConverter ???{ ???????protected override void Convert(TextWriter writer, LoggingEvent loggingEvent) ???????{ ???????????var webmethod = loggingEvent.MessageObject as WebMethodLog; ???????????if (webmethod == null) return; ???????????writer.Write("\r\n------------------------------------------------------------begin----------------------------------------------------------------------"); ???????????writer.Write("\r\nDate: "+System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss,fff")); ???????????writer.Write(string.Format("\r\nOperator No.: {0}, Operator Name: {1}",webmethod.operatorNo,webmethod.operatorName)); ???????????writer.Write(string.Format("\r\nMethod: {0}", webmethod.method)); ???????????writer.Write("\r\nMessage: "+webmethod.message); ???????????writer.Write("\r\n------------------------------------------------------------end-------------------------------------------------------------------------"); ???????} ????}
  • 新建WebMethodPatternLayout类
public class WebMethodPatternLayout : log4net.Layout.PatternLayout ?????{ ???????public WebMethodPatternLayout() ???????{ ???????????this.AddConverter("webMethod", typeof(WebMethodPatternConvert)); ???????} ???????}
  •  在web.config中进行如下配置:

        1. 在configSections标签中加入如下配置

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

 

         2.  在configuration标签下加入如下配置  

<log4net> ???????<root> ???????????<level value="ALL" /> ???????????<appender-ref ref="InfoAppender" /> ???????????<appender-ref ref="ErrorAppender" /> ???????</root> ???????<logger name="logInfo"> ???????????<level value="Info" /> ???????????<appender-ref ref="InfoAppender" /> ???????</logger> ???????<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender,log4net"> ???????????<param name="File" value="Logs/" /> ???????????<param name="AppendToFile" value="true" /> ???????????<param name="MaxFileSize" value="10240" /> ???????????<param name="MaxSizeRollBackups" value="100" /> ???????????<param name="StaticLogFileName" value="false" /> ???????????<param name="RollingStyle" value="Date" /> ???????????<param name="DatePattern" value="&quot;Logs_&quot;yyyyMMddHH&quot;Info.txt&quot;" /> ???????????????????????<!--<layout type="log4net.Layout.PatternLayout,log4net">--> ???????????<layout type="HITTS.Web.Common.WebMethodPatternLayout"> ???????????????<param name="ConversionPattern" value="%webMethod" /> ???????????</layout> ???????????<filter type="log4net.Filter.LevelRangeFilter"> ?????????????????<levelMin value="ALL" /> ?????????????????<levelMax value="INFO" /> ?????????????</filter> ????????</appender> ???????<logger name="logError"> ???????????<level value="Error" /> ???????????<appender-ref ref="ErrorAppender" /> ???????</logger> ???????<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender,log4net"> ???????????<param name="File" value="Logs/" /> ???????????<param name="AppendToFile" value="true" /> ???????????<param name="MaxFileSize" value="10240" /> ???????????<param name="MaxSizeRollBackups" value="100" /> ???????????<param name="StaticLogFileName" value="false" /> ???????????<param name="RollingStyle" value="Date" /> ???????????<param name="DatePattern" value="&quot;Logs_&quot;yyyyMMddHH&quot;Error.txt&quot;" /> ???????????<layout type="HITTS.Web.Common.WebMethodPatternLayout"> ???????????????<param name="ConversionPattern" value="%webMethod" /> ???????????</layout> ???????????<filter type="log4net.Filter.LevelRangeFilter"> ?????????????????<levelMin value="ERROR" /> ?????????????????<levelMax value="FATAL" /> ?????????????</filter> ?????????</appender> ???????<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net"> ???????????<layout type="log4net.Layout.PatternLayout,log4net"> ???????????????<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> ???????????</layout> ???????</appender> ???</log4net>
  •  在AssemblyInfo.cs文件中增加如下代码:
[assembly:log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)]
  •  测试Log代码
[WebMethod]

public static string LogTest()
???????{
???????????log4net.ILog log = log4net.LogManager.GetLogger("InfoTest");
???????????string json = "{‘Name‘:‘Cherry‘,‘Age‘:‘27‘}";
???????????log.Info(new WebMethodLog() { operatorNo = employee.EmployeeNo, operatorName = employee.Name, method = HttpContext.Current.Request.Path, message = json });
???????????log.Error(new WebMethodLog() { operatorNo = employee.EmployeeNo, operatorName = employee.Name, method = HttpContext.Current.Request.Path, message = json });
???????????return json;
???????}

 
  • 测试结果如下:

在Logs文件夹下生成了如下文件:

log4net VS2012 日志layout自定义,error日志和info日志分别记录到不同文件中

原文地址:https://www.cnblogs.com/cherryzhou/p/8528974.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved