C#-log4net帮助类
2021-01-08 07:29
                         标签:tin   基金   layout   自动   efi   右键   width   close   属性        一、log4net   log4net是一个可以帮助程序员把日志信息输出到各种 不同目标的.net类库。它可以容易的加载到开发项目中,实现程序调试和运行的时候的日志信息输出,提供了比.net自己提供的debug类和trace 类的功能更多。log4net是从java下有卓越表现的log4j移植过来的。它是apache基金资助的项目的一部分。   二、创建项目   先看下结构,所用的NuGet包log4net 2.0.8,当前选中的是启动项目,LogManager是log4net帮助类,实际应用中直接Copy项目即可。           代码相对简单,先上代码,主要在配置,     log4net.config配置文件,里面包括写日志的位置好多信息。   执行写日志代码,   如果现在执行,在程序的输出文件中是看不到任何日志文件的,   需要在启动项目的AssemblyInfo.cs中添加如下,   //日志   这是为项目注册log4net.config配置文件,否则的话你的配置是不能加载的,   之后再执行写日志,发现还是没有输出日志的文件,这是log4net.config没有设置复制到输出目录,右键属性,复制到输出目录,始终复制,   执行,会发现有输出日志文件啦,   打开日志看下里面是不是与想象的一样,接下来分析下log4net.config内容是怎么配置生成日志的规则的。   先说下刚才代码中的Debug、Info等日志等级,Format是输出格式,   0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0   穿插下日志吧,   在程序中写日志是一件非常重要,但是很容易被开发人员忽视的地方。写好程序的日志可以帮助我们大大减轻后期维护压力。在实际的工作中,开发人员往往迫于巨大时间压力,而写日志又是一个非常繁琐的事情,往往没有引起足够的重视。开发人员应在一开始就养成良好的日志撰写习惯,并且应在实际的开发工作中为写日志预留足够的时间。    一般程序日志出自下面几个方面的需求:    日志级别 ALL   1. TRACE designates finer-grained informational events than the DEBUG.Since:1.2.12,很低的日志级别,一般不会使用。TRACE一般跟踪的是函数的调用,并且TRACE不应该含有变量参数,而仅能提示函数的调用关系。   2. DEBUG 一般用于细粒度级别上,对调试应用程序非常有帮助,主要用于开发过程中打印一些运行信息。   3. INFO消息在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息,这个可以用于生产环境中输出程序运行的一些重要信息,但是不能滥用,避免打印过多的日志。   4. WARN表示会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员一些提示。该级别表示程序会自动调整到正常的状态,类似参数未传入,使用了默认的参数,仍符合程序员预期之内的情况。   5. ERROR指出虽然发生错误事件,但仍然不影响系统的继续运行。打印错误和异常信息,如果不想输出太多的日志,可以使用这个级别。一般在WARN之后的级别在打印错误时,应该同时打印错误码。   6. FATAL指出每个严重的错误事件将会导致应用程序的退出,这个级别比较高,重大错误,程序无法恢复,必须通过重启程序来解决。   0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0   首先,把config文件内容压缩起来,如下图,这两个名称就是我们在LogEvent.cs文件中的定义的两个方法的名称,相当于你调用方法的进行了switch case操作,找到相应的写配置内容,其中appender后是在这个基础上延伸出来的多个文件夹,比如,你按照日志等级可以写多文件呀,DEBUG写debug文件,INFO写info文件等等。     展开其中一个logger和appender,logger里面显示的就是你之后追加了几种写日志的方式,解释各个param的作用:   File是日志存储路径,输出到什么目录,   AppendToFile是否覆写文件,意思就是启动的时候如果当前文件夹存在同名文件,若此值为true,则继续写到同名文件中,若为false,就是先备份此文件,再新建同名文件进行写入,   MaxSizeRollBackups,当前文件夹中,同名的文件最大个数,比如DefaultError.log,当前文件写到10M,则重命名为DefaultError.log.1,又新建一个DefaultError.log,直到到DefaultError.log.10,之后9的就会把10的覆盖,一次这样,文件夹中就会只有10个存在,保证磁盘空间,   MaximumFileSize,每个文件的大小,每到10M就会新生成一个文件,   RollingStyle,默认滚动样式,在这里是Size,就是大小,也就是10M,新生成一个文件,而不是通过日期进行滚动,   StaticLogFileName,是否采用静态文件名,就是文件的名称是否是静态的,不变的,若RollingStyle为Date,就可以设置StaticLogFileName为false,根据日期来生成,这样子你的文件名就是动态的,   layout是布局,即写日志的文件格式,内容的格式信息,可参考官方文档,   filter是过滤生成文件的条件,当前是范围输出,即满足当前范围条件,才到此文件中,这个范围也就是日志等级,     C#-log4net帮助类 标签:tin   基金   layout   自动   efi   右键   width   close   属性    原文地址:https://www.cnblogs.com/7haihai/p/13124590.html


 1     /// 


 1 "1.0" encoding="utf-8" ?>
 2 
 1             for(int i = 0; i 100; i++)
 2             {
 3                 LogEvent.Loger.Debug("Debug..................Debug............................Debug..........................");
 4                 LogEvent.Loger.DebugFormat("Debug..................Debug............................Debug..........................{0}", i);
 5                 LogEvent.Loger.Info("Info.....................Info............................Info...........................");
 6                 LogEvent.Loger.InfoFormat("Info.....................Info............................Info...........................{0}", i);
 7                 LogEvent.Loger.Error("Error....................Error.............................Error.......................");
 8                 LogEvent.Loger.ErrorFormat("Error....................Error.............................Error.......................{0}", i);
 9                 LogEvent.Loger.Fatal("Fatal....................Fatal.............................Fatal.......................");
10                 LogEvent.Loger.FatalFormat("Fatal....................Fatal.............................Fatal.......................{0}", i);
11 
12 
13                 LogEvent.LogInfo.Debug("Debug..................Debug............................Debug..........................");
14                 LogEvent.LogInfo.DebugFormat("Debug..................Debug............................Debug..........................{0}", i);
15                 LogEvent.LogInfo.Info("Info.....................Info............................Info...........................");
16                 LogEvent.LogInfo.InfoFormat("Info.....................Info............................Info...........................{0}", i);
17                 LogEvent.LogInfo.Error("Error....................Error.............................Error.......................");
18                 LogEvent.LogInfo.ErrorFormat("Error....................Error.............................Error.......................{0}", i);
19                 LogEvent.LogInfo.Fatal("Fatal....................Fatal.............................Fatal.......................");
20                 LogEvent.LogInfo.FatalFormat("Fatal....................Fatal.............................Fatal.......................{0}", i);
21             }
22 
23             Console.ReadKey();
  [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
  1. 记录用户操作的审计日志,甚至有的时候就是监管部门的要求。 
  2. 快速定位问题的根源 
  3. 追踪程序执行的过程。 
  4. 追踪数据的变化 
  5. 数据统计和性能分析 
  6. 采集运行环境数据 
  一般在程序上线之后,一旦发生异常,第一件事就是要弄清楚当时发生了什么。用户当时做了什么操作,环境有无影响,数据有什么变化,是不是反复发生等,然后再进一步的确定大致是哪个方面的问题。确定是程序的问题之后再交由开发人员去重现、研究、提出解决方案。这时,日志就给我们提供了第一手的资料。  
