当前位置: 首页 > Linux

slf4j和logback日志配置详解

时间:2023-04-06 21:20:45 Linux

背景javaweb下有几个日志框架,如:logback、log4j、log4j2(slj4f不是日志框架,相当于定义了一个规范,实现了的日志框架这个规范可以用slj4f调用)。其中性能最高的应该是logback,springboot默认也是使用logback日志的,所以本文将详细讲解logback日志的配置方案。本文主要内容如下:logback配置文件的组成如何将日志输出到文件中如何按时间和大小划分日志如何让一个日志文件只有一个日志级别如何输出日志指定包下到指定日志文件中简单使用如果不需要复杂的日志配置,只需设置日志打印级别即可,打印方式直接在application.yml中配置即可。SpringBoot默认输出info级别的日志到控制台,不写入日志文件,无法进行复杂的配置。打印到文件要将日志输出到文件,可以使用以下两个配置:日志文件名是:spring.logpath:./logfile:#设置日志文件大小max-size:10MB注意:文件和路径不能同时配置。如果同时配置了path,则不会生效。打印级别控制可以通过配置控制日志打印级别,格式如下:logging.level.*=TRACE/DEBUG/INFO/...*可以是包名或Logger名,如下:logging:level:#rootlogatWARNlevelOutputroot:info#该包下的所有类在DEBUGleveloutputcom.example.log_demo.log1:warnlogback具体配置下面我们将通过一个独立的xml配置文件来说明如何配置日志打印。虽然springboot要淘汰xml,但是一些复杂的功能还是要写xml的。使用xml后,application.yml中的配置要去掉,以免冲突。根据不同的日志系统,按照指定的规则组织配置文件名,放在resources目录下,可以被springboot自动加载:xml,logback.groovyLog4j:log4j-spring.properties,log4j-spring.xml,log4j.properties,log4j.xmlLog4j2:log4j2-spring.xml,log4j2.xmlLogging):logging.properties可配置如果要自定义文件名:logging.config指定配置文件名:logging.config=classpath:logging-config.xmlSpringBoot官方推荐使用带-spring的文件名作为你的Log配置(比如使用logback-spring.xml而不是logback.xml),一个名为logback-spring.xml的日志配置文件,springboot可以在里面添加一些springboot特有的配置项(下面会提到)。logback配置文件的组成根节点有5个子节点,下面一一介绍。node根节点是必选节点,用于指定最基本的日志输出级别,level属性只有一个,用于设置打印级别,选项如下:TRACE、DEBUG、INFO、WARN、ERROR,全部关闭。根节点可以包含0个或多个元素,向其添加appender。如下:Appender也是子节点之一,后面会解释之后。节点设置上下文名称,默认为default,可以使用%contextName打印上下文名称,一般不用该属性。节点用于定义变量,使用方便。有两个属性:名称,值。定义一个变量后,你可以使用${}来使用这个变量。如下:节点appender用于格式化日志输出节点,这是最重要的。有两个属性:name:appender类的名称:指定输出策略,通常有两种:控制台输出,文件输出下面举例说明如何使用:输出到控制台/按时间输出日志%d{yyyy-MM-ddHH:mm:ss.SSS}[%thread]%-5level%logger{50}-%msg%n${LOG_HOME}/timeFile/out.log${LOG_HOME}/timeFile/info.%d{yyyy-MM-dd}.%i.log。gz3010MB%d{yyyy-MM-ddHH:mm:ss.SSS}[%thread]%-5level%logger{50}-%msg%nUTF-8设置只输出单层在appender中设置,过滤子节点,然后在默认层过滤,配置onMatch,onMismatch只能输出单个LevelINFOACCEPTDENY节点组成该节点用于设置包或特定包的日志打印级别class,并且指定有以下三个属性:name:必须用来指定一个包或一个特定的类受制于这个loger。级别:可选。设置打印级别。默认为根级别。附加性:可选。是否将打印信息传递给上级loger(即根节点)。默认为真。使用示例如下:不指定级别,不指定appender2。指定level,不指定appender3.指定级别,指定appender通过指定appender可以将指定包下的日志打印到指定文件。多环境日志输出通过设置文件名以-spring结尾,可以配置不同环境下的logger。示例如下:也可以通过配置spring.profiles.active来切换上面的logger打印设置