在 Java (Spring Boot)应用中, 经常使用 LogBack 日志框架来记录日志,也可以配合 Lombok 中的 @Slf4j 注解来简化代码。 为定制日志的输出,通常会在项目中配置一个名为: logback.xml 的配置文件。
pom.xml 文件
最基本的情况,需要一个依赖库
1 2 3 4 5
| <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.2</version> </dependency>
|
如果配合 lombok 一起使用,则可以定义两个依赖库
1 2 3 4 5 6 7 8 9 10 11 12
| <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.14</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.2</version> </dependency>
|
logback.xml 配置文件
在 maven 项目中,通常将 logback.xml 文件放置于项目的 src/main/resources 目录中。下面展示一些基本的内容,以便于大家快速的构建自己的项目日志配置
最基础的配置:
1 2 3 4 5 6 7 8 9 10 11
| <configuration> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern> </layout> </appender> <root> <level value="debug"/> <appender-ref ref="stdout"/> </root> </configuration>
|
在最基础的配置中,我们简单的将日志输出到屏幕上。
如果我们需要把日志记录在本地文件中,通常需要加上如下的配置信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <substitutionProperty name="logbase" value="#123;user.dir}/logs/ "/>
<appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <Encoding>UTF-8</Encoding> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <File>#123;logbase}%d{yyyy-MM-dd}.log</File> <FileNamePattern>#123;logbase}.%d{yyyy-MM-dd}.log.zip </FileNamePattern> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>2MB</MaxFileSize> </triggeringPolicy> <layout class="ch.qos.logback.classic.html.HTMLLayout"> <pattern>%date%level%thread%10logger%file%line%msg</pattern> </layout> </appender>
|
提上配置中,首先声明了一个名为 logbase 的变量,指明日志文件存放的目录。为了防止单个日志文件太大,声明了日志文件的滚动方式。
加上文件配置后,完整的 logback.xml 如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <configuration> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern> </layout> </appender>
<substitutionProperty name="logbase" value="#123;user.dir}/logs/ "/> <appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <Encoding>UTF-8</Encoding> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <File>#123;logbase}%d{yyyy-MM-dd}.log</File> <FileNamePattern>#123;logbase}.%d{yyyy-MM-dd}.log.zip </FileNamePattern> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>2MB</MaxFileSize> </triggeringPolicy> <layout class="ch.qos.logback.classic.html.HTMLLayout"> <pattern>%date%level%thread%10logger%file%line%msg</pattern> </layout> </appender>
<root> <level value="debug"/> <appender-ref ref="stdout"/> <appender-ref ref="logfile"/> </root> </configuration>
|
当然,我们也可以配置把日志写到数据库中,以下展示以 MySQL 数据库为日志存储时的配置:
1 2 3 4 5 6 7 8
| <appender name="DB" class="ch.qos.logback.classic.db.DBAppender"> <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource"> <driverClass>com.mysql.jdbc.Driver</driverClass> <url>jdbc:mysql://localhost:3306/logs</url> <user>logUser</user> <password>123456</password> </connectionSource> </appender>
|