明白几个东西:
1.logging是jdk原生日志框架(一般不用)
2.log4j是Apache开源的日志框架,现在已经停了维护,但绝大数企业还是用的它
3.logback是log4j的一种该进
4.log4j2是重新完完整整被写的一个新的
一、springboot配置log4j2日志:
1.pom.xml文件
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-log4j2
2.在resource下建立 log4j2.xml
代码:
/home/WorkStatLog
filePattern="${LOG_HOME}/workStat-%d{yyyy-MM-dd}.log">
filePattern="${LOG_HOME}/logs/$${date:yyyy-MM}/workStatapp-%d{MM-dd-yyyy}-%i.log.gz">
filePattern="${LOG_HOME}/workStatApp-%d{yyyy-MM-dd}.log">
启动结果:
二、sprinboot配置log4j2框架(也是一种参考)
1.pom.xml
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-log4j2
2.代码:
建立log4j2.xml:主要注意下面路径看在E:/下生产成log文件夹,包括三个文件
E:/
filePattern="${LOG_HOME}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
filePattern="${LOG_HOME}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
filePattern="${LOG_HOME}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
在yml配置:
logging:
config: classpath:log4j2.xml
结果:
三、springboot配置logback
springBoot集成了logBack日志框架,不需要去添加依赖,如果是被排除了,可以添加如下依赖试试。
1.pom.xml
logBack包含三个模块:logback-core,logback-classic和logback-access。logback-core是核心模块,其它两个模块基础
logback-classic是log4j的一个
改良版本,并且完整实现了SLF4J api。logback-access是提供和web容器访问的日志功能。
故我们在springboot中代码中直接使用slf4j的接口来进行日志打印,没有引用任何logback的代码,就完成了logback的调用,
我们只需要使用如下形式即可。
1、用lombok插件,只要在类上用一个@slf4j注解既可使用log变量来打印,如果log变量不能用,idea中去加入插件。导入为
import lombok.extern.slf4j.Slf4j;
2、自己在类中定义:private final Logger logger = LoggerFactory.getLogger(类名.class);
导入为:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
这样就可以用logger变量来打印。
logback配置简单介绍
i1、配置中重要三要素: Logger、appender、layout
Logger:日志的记录器,通过LogContext进行管理,存放Logger对象。
appender:日志输出目的地,控制台,文件,数据库。
layout:日志输出的格式。
i2、日志级别
经常用的:error>warn>info>debug>trace
2.logback配置需求:
需求:分别在controller包和service包的日志,分别输出到两个日志文件下,其他输出到另一个日志文件(root下)
明白property标签,appender标签,logger标签,root标签和其中一些属性的意思。
3.配置代码:
value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:-} --- [%15.15t] %-40.40logger{39} : %m%n"
/>
value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) {faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"
/>
${LOG_PATH:-}/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.%i.log
100MB
30
2GB
${FILE_LOG_PATTERN}
utf8
${LOG_PATH:-}/%d{yyyy-MM-dd}/controller/%d{yyyy-MM-dd}-controller.%i.log
100MB
30
2GB
${FILE_LOG_PATTERN}
utf8
${LOG_PATH:-}/%d{yyyy-MM-dd}/service/%d{yyyy-MM-dd}-service.%i.log
100MB
30
2GB
${FILE_LOG_PATTERN}
utf8
${CONSOLE_LOG_PATTERN}
结果:
以前单个文件的代码:(可以废掉)
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
true//这行后面加的
${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log
30
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
100MB
结果: