logback日志配置及使用

您所在的位置:网站首页 springboot打开debug日志 logback日志配置及使用

logback日志配置及使用

2024-07-12 22:19| 来源: 网络整理| 查看: 265

文章目录 配置介绍logback日志需要的依赖日志级别从低到高日志配置文件名节点介绍子节点root子节点appender控制台输出ConsoleAppender输出到文件 RollingFileAppenderlogger节点子节点propertypattern打印日志规则springProfile节点配置环境 完整日志配置介绍 记录器Logger附加器Appender常用附加器 使用介绍代码里使用日志

配置介绍 logback日志需要的依赖 org.slf4j slf4j-api 1.7.30 ch.qos.logback logback-core 1.2.3 ch.qos.logback logback-classic 1.2.3 日志级别从低到高 TRACE logback-demo %d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n 输出到文件 RollingFileAppender

另一种常见的日志输出到文件,随着应用的运行时间越来越长,日志也会增长的越来越多,将他们输出到同一个文件并非一个好办法。RollingFileAppender用于切分文件日志:

logger节点

用来设置某一个包或者具体的某一个类的日志打印级别、以及指定。仅有一个name属性,一个可选的level和一个可选的addtivity属性。 name:用来指定受此loger约束的某一个包或者具体的某一个类。 level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前loger将会继承上级的级别。 addtivity:是否向上级loger传递打印信息。默认是true。 如果addtivity为true,则如下配置就会打印两次相同日志,因为root节点的记录器是根记录器,logger节点的是子目录器,addtivity为true时会向上传递

public class Main { private static final Logger log = LoggerFactory.getLogger("com.test.cms"); public static void main(String[] args) { log.info("测试"); } }

示例 我们一般针对DAO的包进行DEBUG日志设置:

此为logback的配置,log4j和log4j2同理,都是扫描dao包,日志级别设置成debug

子节点property

用来定义变量值的标签, 有两个属性,name和value;其中name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。

pattern打印日志规则

pattern由文字文本和转换说明符组成,您可以在其中插入任何文字文本 常用的转换说明符

转换字描述例子打印结果logger{length}输出记录器的名称,参数length为输出的长度,非必填,记录器会自动简记录器的名称%loggerclass{length}日志的请求的调用者的完全限定类名%classline输出发出记录请求的行号%linedate{pattern}输出日志记录事件的日期,pattern为日期格式,非必填%date精确到毫秒level输出日志的级别%levelthread输出日志所在的线程%threadmsg输出用户的日志信息%msg-{length} 转换字转换字的输出长度,如果不够则空格补凑%-5levelinfo,info前面会有一个空格自定义转换字将自定义的转换字输出值%X{自定义转换字}打印保存的自定义的值,可以使用import org.slf4j.MDC;的MDC.put(key, valye);,key为自定义的转换字 springProfile节点配置环境

将root节点包含在springProfile节点中,可以根据配置环境

完整日志配置介绍 logback ${logPattern} ${log.path} ${log.path}/%d{yyyy-MM-dd}.log.gz 30 5MB ${logPattern} UTF-8 0 10000

有的版本不支持,必须使用

格式,

记录器Logger

生成记录器:private final static Logger logger = LoggerFactory.getLogger(“名称”); 名称可以是类的全路径如:com.example.App,也可以是类的class,如App.class,记录器的构造器会自动获取App.class.getName();和直接写全路径一个效果。当生成com.example.App记录器时,还会生成com.example记录器和com记录器,com.example为com.example.App的父记录器,com记录器是com.example的父记录器,下图中的根记录器是系统自动生成的,子记录器会继承父记录器的属性,父记录器也会默认打印子记录器的日志,所以可能会打印重复的日志的,可以通过设置addtivity为false不向上传递。

获取根记录器的方法:LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);

记录器Logger的层级结构 在这里插入图片描述

附加器Appender

记录器会将输出日志的任务交给附加器完成,不同的附加器会将日志输出到不同的地方,比如控制台附加器、文件附加器、网络附加器等。

常用附加器

控制台附加器:ch.qos.logback.core.ConsoleAppender 文件附加器:ch.qos.logback.core.FileAppender 滚动文件附加器:ch.qos.logback.core.rolling.RollingFileAppender

基于滚动文件附加器的滚动策略: 1、基于时间的滚动策略 ch.qos.logback.core.rolling.TimeBasedRollingPolicy 2、基于大小和时间的滚动策略 ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy

基于时间的滚动策略的附加器的配置

${LOG_PATH}/${LOG_NAME}.log ${LOG_PATH}/${LOG_NAME}.%d{yyyy-MM-dd}.log 180 20GB UTF-8 ${log.pattern}

基于大小和时间的滚动策略的附加器的配置

${LOG_PATH}/api-error.log ${LOG_PATH}/api-error.%d{yyyy-MM-dd}-%i.log 60 20GB 50GB ${log.pattern} ERROR ACCEPT DENY 使用介绍 代码里使用日志 在类里使用日志打印信息时不用判断日志级别是否可用,不会影响性能。

在每个类创建日志对象去打印信息

private static final Logger logger = LoggerFactory.getLogger(YjServiceImpl.class); logger.error("xxx");

也可以直接在类上通过 @Slf4j 标签去声明式注解日志对象

org.projectlombok lombok 1.16.16 // 然后就直接可以使用了: @Slf4j @RestController public class HfwController { log.info(""); }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3