一、日志框架选择
市面上的日志框架:
排除:
jboss-logging
JCL
日志抽象层选:SLF4J
日志实现:Logback
SpringBoot:底层是Spring框架,Spring框架默认用JCL
SpringBoot选用SLF4J和Logback;
二、SLF4j使用
1、如何在系统中使用SLF4j
之后开发时,应调用日志抽象层的方法
给系统导入slf4j和logback的实现jar
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
每个日志框架都有自己的配置文件,使用slf4j后,配置文件做成日志实现框架自己本身的配置文件
2、遗留问题
a(slf4j+logback):Spring(commons-logging) Hibenate(Jboss) Mybatis
别的框架也统一使用slf4j进行输出
让系统中的所有日志都统一到slf4j:
1、将系统中其他日志框架排除出去
2、用中间包替换原有日志框架包
3、再来导入slf4j其他的实现
三、SpringBoot日志关系
小结:
1)SpringBoot底层也是使用slf4j+logback的方式进行日志记录
2)SpringBoot也把其他的日志都替换成了slf4j
3)如果引入其他框架 需要把默认的日志依赖移除
@RunWith(SpringRunner.class)
@SpringBootTest
public class Springboot03LoggingApplicationTests {
//记录器
Logger logger = (Logger) LoggerFactory.getLogger(getClass());
@Test
public void contextLoads() {
//日志级别由低到高,可以调整输出的日志级别
logger.trace("这是trace日志");
logger.debug("这是debug日志");
//springboot默认使用info级别,没有指定级别就用默认
logger.info("这是info日志");
logger.warn("这是warn日志");
logger.error("这是error日志");
}
日志级别调整在配置文件中
日志输出情况:
1、logging.file.name
自动在根目录生成log文件(或者随便指定地址)
2、logging.file.path
#便是在当前磁盘的根目录创建spring文件夹和log文件夹;使用spring.log做默认文件
logging.file.path=/spring/log
3、日志的输出格式
#在控制台输出的日志格式
logging.pattern.console=
#指定文件中日志输出的格式
logging.pattern.file=
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern>
四、日志切换
给类路径下放上每个日志框架自己的配置文件即可;SpringBoot就不使用他默认配置的
在项目根目录加logback.xml:直接被日志框架识别
lockback-spring.xml:日志就不直接加载日志的配置项由springboot配置解析日志,可使用springboot高级profile功能,指定环境配置日志格式。