在jdk1.3时期想要追踪异常大多只能使用System.out.println("error")
的方式,这会导致代码中出现大量的打印而且无法记录在文本中。于是
这便是日志框架的整体设计思路例如:log4j(开源)、jul(官方)
日志实现 | 日志门面 | 实现方式 |
---|---|---|
log4j(性能差,淘汰) | JCL | 使用类加载器主动寻找有没有日志实现,缺点:当使用自定义类加载器时可能会导致内存溢出。 |
jul(性能一般,使用方便) | SJF4J | 使用桥接器将日志实现和日志门面关联,性能更好。适配器将其他日志转换成指定的日志类型,例如将jul或jcl等转换成slf4j。SJF4J官方针对每个日志都提供了对应的适配器,也针对日志实现提供了对应的桥接器。 |
log4j2(推荐) | ||
logback(推荐,与SJF4J同一作者) |
门面不实现日志功能,只是整合日志框架。
commons-logging
commons-logging
1.2
多个日志框架同时存在时,为实现日志统一,将jcl转化到slf4j
org.slf4j
jcl-over-slf4j
1.7.30
import org.apache.commons.logging.LogFactory;
Log logger = LogFactory.getLog(jul.class);
logger.info("n一行信息");//对应不同日志级别
#ALL
log4j
log4j
1.2.12
org.slf4j
slf4j-api
1.7.36
org.slf4j
slf4j-log4j12
1.7.30
import org.slf4j.LoggerFactory;
Logger logger = LoggerFactory.getLogger(log4j.class);
logger.info("nn一行信息");//对应不同日志级别
SpringBoot已经默认集成了slf4j+logback来实现日志,同时也把其他日志替换成了slf4j
spring官网有详细说明
logging.level.org.example.springbootcode_logging=trace //修改日志文件等级
import org.slf4j.LoggerFactory;
static Logger logger = LoggerFactory.getLogger(SpringBootCodeLoggingApplication.class);
logger.trace("追踪");
logger.debug("调试");
logger.info("信息");
logger.warn("警告");
logger.error("异常");
logging.pattern.console=%clr(%d{${LOG DATEFORMAT PATTERN:-yyyy-MM-ddHH:mm:ss.sss}}){faint}%c1r(${LOG LEVEL PATTERN:-%5p})%clr(${PID:-}){magenta} %clr(---){faint}%clr([%15.15t]){faint}%c1r(%-40.40logger{39}){cyan} %clr(:){faint}%m%n${LOG_EXCEPTION CONVERSION WORD:-%wEx}
logging.file.path=D:/Project/JavaProject/SpringBootCode_logging/Log
logging.file.name=test.log
logging.logback.rollingpolicy.max-file-size=5kb
Sping只提供了基础的配置选项,想要实现更多更深层的功能就必须要自定义配置,具体怎么做呢
org.springframework.boot
spring-boot-starter-log4j2
由于logback默认使用logback-classic桥接器,所以要排除掉默认的场景启动器,否则项目会报错
spring-boot-starter-logging
org.springframework.boot
添加log4j2配置文件
org.slf4j
slf4j-log4j12
logback-classic
ch.qos.logback
添加log4j配置文件
参与评论
手机查看
返回顶部