日记级别系统,用来区分日记的紧张性3.4.1 日记级别
这里我们按照上面的步骤创建一个日记记录器,将日记文件分别输出到控制台和文件中
以上3.4小节通过硬编码的方式打印输出日记,这样的方式很不利于后期的管理与维护,这小节我们将使用配置文件的方式进行日记输出① 在resources下面新建logconfig.properties文件,内容如下
上面两个小节中,不管是通过编码大概配置文件 都对日记进行了格式化① 编码设置日记格式
String的format方法用来格式化字符串。我们先来看看下面这个简朴例子
format方法就像是一个模板,你可以在这个模板里插入你想要的数据,然后它就会帮你生成一个格式化好的字符串。
%s和%d 为占位符,不同范例需要不同占位符,那么另有哪些常用转换符呢?占位符具体说明示例%s字符串范例****“喜欢晓凡请关注”%c字符范例‘x’%b布尔范例true%d整数范例(十进制)666%x整数范例(十六进制)FF%o整数范例(八进制)77%f浮点范例8.88%a十六进制浮点范例FF.34%e指数范例1.28e+5%n换行符%tx日期和时间范例(x代表不同的日期与时间转换符)3.7.3 特殊符号搭配使用
Log4j 是Apache软件基金组织旗下的一款开源日记框架,是一款比力老的日记框架,目前已出log4j2,它在log4j上做了很大改动,性能提拔了不少。但是有些老项目还会在使用,以是我们也来说一说官网:https://logging.apache.org/log4j/1.x/
日记级别,就比如是日记本里的不同标记,用来区分信息的紧张性。在log4j中,日记级别从低到高分为以下几种:
用来指定日记记录到哪儿,主要有以下几种Appender范例作用ConsoleAppender将日记输出到控制台FileAppender将日记输出到文件中DailyRollingFileAppender将日记输出到文件中,并且每天输出到一个日记文件中RollingFileAppender将日记输出到文件中,并且指定文件的大小,当文件大于指定大小,会生成一个新的日记文件JDBCAppender将日记生存到数据库中4.3.3 Layout
用于控制日记内容输出格式,Log4j常用的有以下几种输出格式日记格式器说明HTMLLayout将日记以html表格形式输出SimpleLayout简朴的日记格式输出,例如(info-message)PatternLayout最强大的格式化器,也是我们使用最多的一种,我们可以自定义输出格式示例:下面我们通过PatternLayout 格式化日记
BasicConfigurator.configure(); 上面代码中通过这段代码初始化日记配置信息,这一小节,我们通过配置文件来配置通过看LogManager日记管理器源码,我们知道可以默认加载如下几种格式的配置文件(此中log4j.xml 和log4j.properties 是我们最常用的)
当我们想定义自己的日记配置时,可以按照如下配置添加.例如:添加com.xiezhr,它也是继续自rootLogger,以是我们必须要添加
log4j.additivity.com.xiezhr=false 避免日记打印重复
作甚日记门面,我们在第二小节中已经介绍过了,这里就不多说了。JCL全称Jakarta Commons Logging是Apache提供的一个通用日记API,JCL中自带一个日记实现simplelog,不过这个功能非常简朴
日记门面的引入,使得我们可以面向接口开发,不再依靠具体的实现类,减小代码耦合。
我们没有导入任何日记实现,以是这里默认使用jdk自带JUL来实现日记
SLF4j 全称是Simple Logging Facade For JavaJava简朴的日记门面 和上一小节说到的JCL干的一样的活。在现目前的大多数Java项目中,日记框架根本上会选择slf4j-api 作为门面,配上具体实现框架logback、log4j 等使用
下图是从官网薅下来的slf4j 日记绑定图,对了,官网在这https://www.slf4j.org/
快速入门中代码不变,运行后,采用logback日记框架输入日记如下所示
下面以Log4j 1.x迁移到slf4j+logback日记组合为例
Logback可以通过编程式配置(添加配置类的方式),也可以通过配置文件配置。7.2.1 Logback 包含哪些组件?
配置文件是日常开发中最常用的,我们这里就以这种方式配置,如果对配置文件感兴趣的小同伴可自行到官网检察
在生产情况中对日记进行按时间、日记大小拆分 且压缩日记非常非常紧张,以是单独拿出来说一说配置文件
Log4j2不光仅是日记实现,同时也是日记门面。在快速入门中,我们就使用Log4j2作为日记门面和日记实现来快速入门8.1.1 添加依靠
前面我们提到SLF4j+Log4j2组合会是将来日记发展的大趋势,以是接下来我们就使用这个组合来输出日记导入依靠
说明:日记框架(SLF4J、JCL--Jakarta Commons Logging)的使用方式(推荐使用 SLF4J)1)使用SLF4J
说明:推荐对日记进行分类,如将错误日记和业务日记分开存放,便于开发人员检察,也便于通过日记对系统进行实时监控。正例:mppserver 应用中单独监控时区转换异常,如:
说明:因为 String 字符串的拼接会使用 StringBuilder 的append()方式,有肯定的性能消耗。使用占位符仅是更换动作,可以有效提拔性能。正例:
说明:虽然在 debug(参数)的方法体内第一行代码 isDisabled(Level.DEBUG_INT)为真时(Slf4j 的常见实现Log4j 和 Logback),就直接 return,但是参数大概会进行字符串拼接运算。此外,如果 debug(getName())这种参数内有 getName() 方法调用,无谓浪费方法调用的开销。正例:
说明:如果对象里某些 get 方法被覆写,存在抛出异常的情况,则大概会因为打印日记而影响正常业务流程的执行。正例:
说明:大量地输出无效日记,不利于系统性能提拔,也不利于快速定位错误点。记录日记时请思考:这些日记真的有人看吗?看到这条日记你能做什么?能不能给题目排查带来好处?⓬ 【推荐】可以使用 warn 日记级别来记任命户输入参数错误的情况,避免用户投诉时,无所适从。
说明:如非必要,请不要在此场景打出 error 级别,避免频繁报警。 注意日记输出的级别,error 级别只记录系统逻辑出错、异常大概紧张的错误信息。⓭ 【推荐】尽量用英文来描述日记错误信息,如果日记中的错误信息用英文描述不清楚的话使用中文描述即可,否则轻易产生歧义。
说明:国际化团队或海外摆设的服务器由于字符集题目,使用全英文来解释和描述日记错误信息。本期内容到这儿就结束了 ★,°:.☆( ̄▽ ̄)/$:.°★ 。 希望对您有所资助
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |