资讯专栏INFORMATION COLUMN

log4j2配合slf4j使用

HtmlCssJs / 1020人阅读

摘要:说明被用于日志输出。配置文件使用之前需要在下新建一个配置文件。系统选择配置文件的优先级从先到后如下下的名为或者的文件下的名为的文件下名为或者的文件下名为的文件我们一般默认使用进行命名。

说明

  log4j2被用于日志输出。因为刚接触log4j2,因此记个博客备用。
  log4j2是一个日志框架,slf4j是日志框架接口,之所以使用log4j2和slf4j搭配使用是为了以后如果项目对日志有其它要求而需要更换日志框架时可以不改动代码,只需要把依赖的jar包换掉就可以了。

依赖
// log4j2依赖
log4j-api-2.8.2.jar
log4j-core-2.8.2.jar
// log4j2和slf4j桥接依赖
log4j-slf4j-impl-2.8.2.jar
// slf4j依赖
slf4j-api-1.7.25.jar

注意,log4j依赖和桥接依赖的jar包版本最好保持一致。

配置文件

  使用log4j2之前需要在classpath下新建一个配置文件。需要注意的是log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本配置文件后缀名只能为".xml",".json"或者".jsn"。

系统选择配置文件的优先级(从先到后)如下:

classpath下的名为log4j2-test.json 或者log4j2-test.jsn的文件

classpath下的名为log4j2-test.xml的文件

classpath下名为log4j2.json 或者log4j2.jsn的文件

classpath下名为log4j2.xml的文件

  我们一般默认使用log4j2.xml进行命名。如果本地要测试,可以把log4j2-test.xml放到classpath,而正式环境使用log4j2.xml,则在打包部署的时候不要打包log4j2-test.xml即可。

默认配置文件:



                    
        
            
        
    
    
        
            
        
    

配置文件实例:

  



    

        

            

            
        
        


        
            
        
        

        
            
            
        


        
            
            
        
    
    

    

        
        

        
            
            
            
            
        

    

配置文件说明
  1.根节点Configuration有两个属性:status和monitorinterval,有两个子节点:Appenders和Loggers(表明可以定义多个Appender和Logger).

status用来指定log4j本身的打印日志的级别.

monitorinterval用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s.

  2.Appenders节点,常见的有三种子节点:Console、RollingFile、File.

Console节点用来定义输出到控制台的Appender.

name:指定Appender的名字.

target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT.

PatternLayout:输出格式,不设置默认为:%m%n.

File节点用来定义输出到指定位置的文件的Appender.

name:指定Appender的名字.

fileName:指定输出日志的目的文件带全路径的文件名.

PatternLayout:输出格式,不设置默认为:%m%n.

RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender.

name:指定Appender的名字.

fileName:指定输出日志的目的文件带全路径的文件名.

PatternLayout:输出格式,不设置默认为:%m%n.

filePattern:指定新建日志文件的名称格式.

Policies:指定滚动日志的策略,就是什么时候进行新建日志文件输出日志.

TimeBasedTriggeringPolicy:Policies子节点,基于时间的滚动策略,interval属性用来指定多久滚动一次,默认是1hour。modulate=true用来调整时间:比如现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am.

SizeBasedTriggeringPolicy:Policies子节点,基于指定文件大小的滚动策略,size属性用来定义每个日志文件的大小.

DefaultRolloverStrategy:用来指定同一个文件夹下最多有几个日志文件时开始删除最旧的,创建新的(通过max属性)。

  3.Loggers节点,常见的有两种:Root和Logger.

Root节点用来指定项目的根日志,如果没有多带带指定Logger,那么就会默认使用该Root日志输出

level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.

AppenderRef:Root的子节点,用来指定该日志输出到哪个Appender.

Logger节点用来多带带指定日志的形式,比如要为指定包下的class指定不同的日志级别等。

level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.

name:用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点.

AppenderRef:Logger的子节点,用来指定该日志输出到哪个Appender,如果没有指定,就会默认继承自Root.如果指定了,那么会在指定的这个Appender和Root的Appender中都会输出,此时我们可以设置Logger的additivity="false"只在自定义的Appender中进行输出。

输出日志
/**
 * 
 */
package com.petro.test;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @description 数据库工具类
 * @author PetterChen
 * @date 2017年10月14日 下午9:38:42 
 */
public class LogTest {
    /**
     * 日志输出
     */
    private static Logger log = LoggerFactory.getLogger(LogTest.class);

    /**
     * @description 测试
     * @date 2017年10月14日 下午9:38:42
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        log.trace("trace");
        log.debug("debug");
        log.warn("warn");
        log.info("info");
        log.error("error");
    }

}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70925.html

相关文章

  • 强推!大牛程序员必备的Java日志框架,性能无敌

    摘要:本文要来分享给大家程序员最常用的日志框架组件。没有基础的同学也不要着急,这套教程覆盖了目前所有的日志框架,只要你学,就一定用得到,先收藏,以备不时之需。 作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用、WEB应用以及移动应用。然而日志系统是一个成熟Java应用所必不可少的。在开发和调试阶段,日志可以帮...

    zebrayoung 评论0 收藏0
  • SpringBoot(三)日志

    摘要:日志消息,是换行符如果使用作为日志配置文件,还要使用功能,会有以下错误切换日志框架可以按照的日志适配图,进行相关的切换的方式切换为 三、日志 1、日志框架 小张;开发一个大型系统; 1、System.out.println();将关键数据打印在控制台;去掉?写在一个文件? 2、框架来记录系统的一些运行时信息;日志框架 ; zhanglogging.jar; 3、高大上的几个功能?异步...

    arashicage 评论0 收藏0
  • Spring Boot 2.x(八):日志框架的选择和使用

    摘要:我们为啥要用日志最初我们开始接触的时候,我们通常会使用将我们想要知道的信息打印到控制台。为什么是默认情况下,会用来记录日志,并用级别输出到控制台。 我们为啥要用日志? 最初我们开始接触Java的时候,我们通常会使用System.out.println()将我们想要知道的信息打印到控制台。但是,如果在服务器上我们去运行我们的Java程序,这个时候就凸显了日志对于一个系统来说的重要性,查找...

    lpjustdoit 评论0 收藏0
  • SLF4J

    摘要:方法会调即启动当前的,一般就是,若返回为空,则调。若存在多个日志框架,则类加载的有多个,所以是为载入。的方法会调用,若返回的大小超过,则警告。通过完成初始化,即实例化具体的赋值给内部的,如。 SLF4J(Simple logging Facade for Java)是一个日志框架的适配器。如果一个项目已经使用了log4j,而你加载了Apache Active MQ——它依赖于于另外一...

    Cruise_Chan 评论0 收藏0
  • Java 日志系列篇二 slf4

    摘要:的桥接器这个桥接器将所有日志委派给的原生实现,直接实现了的接口,因此使用与的搭配也暗示了严格的零内存计算溢出未完待补充 起手式 忘了什么时候听老师说过,牛逼的公司只管定义接口,屌丝厂商实现接口,类似 JDBC 的实现便是如此,用在 slf4j, 总觉得有些类似,本来 SUN 有机会在需求产生之前设计一套漂亮的日志框架来一统天下,可惜偏偏要拖到 JDK1.4, 而这套原生的日志框架也没有...

    maybe_009 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<