SpringBoot第十三篇:日志处理 (2)

SpringBoot 默认使用的是 logback 日志系统,需要引入 maven 依赖:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency>

下面我们看看底层的依赖关系:

SpringBoot第十三篇:日志处理

由上图可以得到几个结论:

SpringBoot 底层也是使用 slf4j+logback 的方式进行日志记录;

SpringBoot也把其他的日志都替换成了slf4j;

我们在启动类做一个简单的测试,观察效果:

@SpringBootApplication public class LogDemoApplication { private static final Logger logger = LoggerFactory.getLogger(LogDemoApplication.class); public static void main(String[] args) { logger.info("hello,logback!"); SpringApplication.run(LogDemoApplication.class, args); } }

  以上代码关于 LoggerFactory.getLogger() 方法中的参数 Clazz.class,主要是准确编写class信息能够提供快速定位日志的效率。即可以在日志中款速定位到要查找的内容。

启动程序,能够看到打印的日志:

SpringBoot第十三篇:日志处理

自定义配置

  以上的示例中,都是用的 SpringBoot 默认的日志属性,当然,这些属性可修改,下图是属性列表,可以根据自己的需求进行自定义。

SpringBoot第十三篇:日志处理

针对属性中关于日志格式的符号定义,此处也做一个简单的说明:

%d{HH:mm:ss.SSS}——日志输出时间 %thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用 %-5level——日志级别,并且使用5个字符靠左对齐 %logger- ——日志输出者的名字 %msg——日志消息 %n——平台的换行符

日志持久化

  以上示例是将日志打印到控制台。在实际项目中,日志通常是进行持久化,存储在文件中或者数据库中。

一、存储在文件中

只要在 application.properties 或者 application.yml 中配置以下属性:

# 日志路径 logging.path= # 日志名称 logging.file=SpringBoot.log

二、存入数据库

这种方式就是醒目中的添加业务了。通常用的不多。


SpringBoot与其他日志框架

  SpringBoot 默认使用的日志框架是 logback + slf4j ,如果想与其它的日志框架整合,则必须将默认的日志框架排除:

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency>

与 log4j2 整合:

首先,引入 maven 依赖:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>

其次,log4j2.xml配置:

<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Properties> <property>../logs/</property> <property>testlog4j2</property> </Properties> <Appenders> <Console target="SYSTEM_OUT"> <PatternLayout> <pattern>%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n</pattern> </PatternLayout> </Console> <RollingFile fileName="${LOG_PATH}/${LOG_FILE}.log" filePattern="${LOG_PATH}/$${date:yyyy-MM}/${LOG_FILE}-%d{yyyy-MM-dd HH-mm}-%i.log"> <PatternLayout> <pattern>%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy /> <SizeBasedTriggeringPolicy size="50 MB" /> </Policies> <DefaultRolloverStrategy max="20" /> </RollingFile> </Appenders> <Loggers> <root level="info"> <AppenderRef ref="Console"/> <AppenderRef ref="errorlogfile" /> </root> </Loggers> </Configuration>

第三步,在 application.properties 中指定配置文件的位置:

logging.config= classpath:log4j2.xml

第四步,在启动类中测试:

@SpringBootApplication public class LogOtherDemoApplication { private static Logger logger = LogManager.getLogger(LogOtherDemoApplication.class); public static void main(String[] args) { logger.info("这里是整合其他日志框架"); SpringApplication.run(LogOtherDemoApplication.class, args); } }

最后,启动项目,可以看到对应的日志和日志文件。


总结

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsysw.html