Spring Boot默认情况下,当使用"Starters" 使用Logback输出日志
, 还包括适当的Logback路由, 确保其他的日志框架(Java Util Logging, Commons Logging, Log4j, SLF4J)都能正常使用
Sping Boot文档的 26.5 Custom Log Configuration 章节,说明了自定义日志配置方法
多样的日志系统可以通过
添加适当的日志框架库到classpath
适当的配置配置文件加入到classpath的根目录 或者 其他的本地目录, 使用Spring配置 loggin.config 配置指定配置文件
依赖于开发者选择的日志框架. 这些对应的配置文件会被加载
日志框架配置文件Logbacklogback-spring.xml,logback-spring.groovy,logback.xml,logback.groovyLog4j2log4j2-spring.xml,log4j2.xmlJDK(JAVA Util Logging)logging.properties
引入Log4j2日志框架
Log4j2为何物就不介绍了. Log4j2官网
配置的方案 在官方文档 77.2 Configure Log4j for Logging
- Maven依赖配置
pom.xml中去掉Logback, 引入log4j2
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-log4j2
- 配置文件
2.1 log4j2.xml
使用xml格式配置文件, 无需添加额外的依赖库.
2.2 log4j2.yaml / log4j2.yml
使用 yaml/yml格式配置文件. 需要额外引入依赖库
com.fasterxml.jackson.core
jackson-databind
com.fasterxml.jackson.dataformat
jackson-dataformat-yaml
2.3 log4j2.json
使用 json 格式配置文件, 需要额外引入依赖库
com.fasterxml.jackson.core
jackson-databind
- 修改spring boot配置
指定spring boot配置文件
application.yaml文件配置如下
logging:
config: classpath:log4j2.xml
Log4j2日志配置
如需了解Log4j2详尽的配置, 可访问官方文档
概述
大概介绍一下Log4j2的基本信息
日志的Level分为:
trace (追踪)
debug (调试)
info (信息)
warn (警告)
error (错误)
fatal (严重错误)
这里介绍一下博主经常使用的一种日志方式 RollingFileAppender
以一个具体的配置为例
/tmp/log4j2
[%d] - [%c] - [%highlight{%level}] - [%method] - [%t] - %msg%n
[%d] - [%c] - [%highlight{%level}] - [%method] - [%t] - %msg%n
- Configuration 参数
status: Level枚举型, 控制输出Log4j事件信息, 默认 error
name: 配置名称
strict: 是否使用严格的XML格式. 推荐使用, 规范开发者的配置编写, 不支持jsonp配置
... 其他几个配置可以参考官方文档
- Properties
设置配置文件全局的参数变量. 用于减少自定义配置信息的重复编码.
/tmp/log4j2
配置下文中, 可以使用 ${filepath} 来代替 /tmp/log4j2
- Appenders
Log4j2提供了丰富的Appender
AsyncAppender 设置appender异步方式输出日志
CassandraAppender 输出至Cassandra存储
ConsoleAppender 输出控制台
FailoverAppender 设置appender错误重试
FileAppender 输出至文件
FlumeAppender 输出至Flume
JDBCAppender 输出至JDBC连接的关系型数据库表
JMS Appender 输出至消息服务
JPAAppender 输出至使用JPA连接的关系行数据库
HttpAppender 输出至Http Service
KafkaAppender 输出至Kafka
MemoryMappedFileAppender 输出至内存
NoSQLAppender 输出至NoSQL数据库
OutputStreamAppender File/Socket类型的Appender
RandomAccessFileAppender 性能是FileAppder的0.2-2倍
RollingFileAppender 输出至文件, 文件能按照规则打包文件
RollingRandomAccessFileAppender 同上
SMTPAppender 邮件形式输出
SocketAppender socket方式发送日志
项目中比较常用的是 ConsoleAppender 和 RollingFileAppender.
接下来对上述的Appender配置参数的说明
[%d] - [%c] - [%highlight{%level}] - [%method] - [%t] - %msg%n
[%d] - [%c] - [%highlight{%level}] - [%method] - [%t] - %msg%n
3.2 日志输出规则 Layouts
Layout有多种格式输出
- CSV
- GELF
- HTML
- JSON
- Pattern
....
项目中一般使用Pattern 按行输出逐条信息, 配置如下:
[%d] - [%c] - [%highlight{%level}] - [%method] - [%t] - %msg%n
% + char/word 代表一种输出的信息或者格式
时间 %d / %date
格式输出%d, %d{DEFAULT}2012-11-02 14:34:02,781%d{UNIX}1351866842%d{UNIX_MILLIS}1351866842781%d{yyyy-MM-dd HH:mm:ss,SSS}2012-11-02 14:34:02,781
类 %c / %logger
输出调用的类名
%c{number} , 控制类型的长度
等级 %level
输出等级 TRACE, DEBUG, INFO, WARN, ERROR, FATAL
颜色格式 %highlight
%heighlight{xxx}
xxx将会带有颜色样式, 并且和Level相关, 一般用于debug调试信息使用
日志内容 %m / %msg / %message
可添加文本样式
换行 %n
根据操作系统的输出不同的换行标识符用户日志换行, 最好别使用 n, rn 等换行符号
其他还有很多标识符号, 参考 官方文档
- Loggers
必须包含一个 Root 元素, 不设置 Root 元素, 将会默认使用类似如下的配置
配置其他开发者自定义的 Logger
使用Logger
以demo为例
package info.chiwm.log4j2.service;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Service;
/**
* @author [email protected]
* @ClassName: Log4j2ServiceImpl
* @Description:
* @date 2018/1/4 上午11:10
*/
@Service
public class Log4j2ServiceImpl implements Log4j2Service {
// 使用LogManager获取配置Logger
private static Logger logger = LogManager.getLogger("fileLogger");
@Override
public void info(String msg) {
// 输出日志
// 特别注意 不要使用 + 去拼接信息, 这样在控制输出级别之后, 有些日志操作不会打印, 但是它去操作了新字符串创建, 使用 {} 去代替 +
logger.info("info {}", msg);
}
@Override
public void error() {
logger.error("error");
}
@Override
public void warn() {
logger.warn("warn");
}
@Override
public void debug() {
logger.debug("debug");
}
@Override
public void trace() {
logger.trace("trace");
}
}
总结
前面的配置步骤,配置,使用步骤,大概描述了Log4j2的使用.
欢迎评论区指出错误或者探讨相关的问题