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

  • 打开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文件夹下生成了如下文件:

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

时间: 2024-11-06 18:12:17

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

ELK之八----Logstash结合kafka收集系统日志和nginx日志

一.logstash结合kafka收集系统日志和nginx日志 架构图: 环境准备: A主机:kibana.elasticsearch,有条件可以将两个服务器分开:192.168.7.100 B主机:logstash主机:192.168.7.101/nginx服务器也在此主机上 C主机:logstash主机:192.168.7.102 D主机:kafka/zookeeper:192.168.7.104 E主机:kafka/zookeeper:192.168.7.105 1.使用logstash-

ELK之logstash系统日志和nginx日志收集-4

logstash常用参数 1 path 是必须的选项,每一个file配置,都至少有一个path 2 exclude 是不想监听的文件,logstash会自动忽略该文件的监听.配置的规则与path类似,支持字符串或者数组,但是要求必须是绝对路径. 3 start_position 是监听的位置,默认是end,即一个文件如果没有记录它的读取信息,则从文件的末尾开始读取,也就是说,仅仅读取新添加的内容.对于一些更新的日志类型的监听,通常直接使用end就可以了:相反,beginning就会从一个文件的头

elk分析nginx日志和tomcat日志

一.介绍 Elasticsearch + Logstash + Kibana(ELK)是一套开源的日志管理方案. Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstash是一个完全开源的工具,它可以对你的日志进行收集.分析,并将其存储供以后使用 kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web

常用获取Android崩溃日志和IOS崩溃日志的几种方法

一:前言 在日常测试app时,经常会遇到崩溃问题,测试快速抓取到崩溃日志可以有效方便开发进行定位,快速解决问题所在测试做到测试分析,定位是非常重要的,这也是判断一个测试能力指标的一大维度. 二:Android崩溃日志 一.通过adb logcat获取 # 清除日志,新手上路时,日志内容很多,对于能毕现的日志,可以先清除后重新获取 adb logcat -c # 然后再次运行崩溃操作,再抓取日志 # 存储日志到当前目录下的 carsh.log 中 adb logcat -d *:W > crash

ASP.NET使用log4Net日志组件教程(按日期与按日志大小切割)

对于一个大型网站与系统来说,日志是必备的工具,通过日志你可以非常清楚程序的运行情况,及时得到反馈来解决问题,下面介绍ASP.NET版本的log4Net日志组件是个非常强大的工具,最新版本for .net2.0 1.2.10.0 本人搞了一天,终于知道搞清楚怎样使用了,简单记录一下. 以下介绍的方法是log4net使用单独的配置文件的. 开始行动: 第一步:在项目引用log4net.dll文件 第二步: 在Web.config文件中加入一句代码,位置如下: <configuration>   

MyBatis应用开发(7)日志之自定义日志实现

1.1. 自定义日志实现 实现MyBatis提供的org.apache.ibatis.logging.Log接口即可. public interface Log { boolean isDebugEnabled(); boolean isTraceEnabled(); void error(String s, Throwable e); void error(String s); void debug(String s); void trace(String s); void warn(Stri

[转载]针对IIS7以上的ASP.NET网站自定义错误页面与异常日志总结

针对IIS7以上的ASP.NET网站自定义错误页面与异常日志总结 汪宇杰 2014-1-11 星期六 02:31 455 Reads 1 Comments 自定义错误页面和异常记录是个很古老的话题了,但依旧可以让人爆到现在.在我做了无数次试验并总结经验和原则后,写下本文,已警后人. 本文的范围和限制 本文仅仅适用于部署在IIS7或以上版本中的ASP.NET 4.0集成模式应用程序.IIS7以上的意思是Windows Server 2008以上服务器适用.我已在WS2012R2,IIS8上测过.

log4net根据日志类型写入到不同的文件中

1 <?xml version="1.0"?> 2 <configuration> 3 <configSections> 4 <!--log4net配置安装--> 5 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> 6 </configSection

C# log4net 配置及使用详解--日志保存到文件和Access(转)

按语: 最近项目要求选用Access数据库,但日志管理采用log4net,但保存到数据库一直没有成功,后按照如下配置在程序退出时可以成功保存. 开始新建文件应用log4net.dll  ,重新编译就报缺少log4net的库,后参考网上资料在项目属性中把目标框架由 Framework client 改为Framwork4 就可以了 本程序演示如何利用log4net记录程序日志信息.log4net是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控制台. Windo