常用处理java的日志组件有 slf4j
,log4j
,logback
,common-logging
等。
基于Log4j
基础上大量改良,不能单独使用,推荐配合日志框架SLF4J
来使用。
Logback当前分成三个模块:logback-core
,logback-classic
和logback-access
;logback-core
是其它两个模块的基础模块
Logger
:日志记录器Appender
:指定日志输出的目的地,目的地可以是控制台,文件Layout
:日志布局 格式化日志信息的输出
我们使用 log4j
时,通常在 classpath
下增加一个 log4j.properties
(log4j
会默认加载该文件复写框架默认的日志配置):
===========log4j示例===========
### 设置###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=D://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=D://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
对应的,logback
也需要日志配置,会默认加载 classpath
下的 logback.xml
。
如果有 log4j.properties
,可以通过在线转换工具直接转为 logback.xml
:https://logback.qos.ch/translator/
SpringBoot2.0.1日志配置
Spring Boot使用Commons Logging进行所有内部日志记录,但保留底层日志实现。 为Java Util Logging
,Log4J2
和Logback
提供了默认配置。 在每种情况下,记录器都预先配置为使用控制台输出,并且还提供可选的文件输出。
默认情况下,如果引入了 starter-xx
依赖,则使用Logback进行日志记录。并且会指定适当的Logback路由,以确保依赖了Java Util Logging,Commons Logging,Log4J或SLF4
J的依赖库都能正常工作。
SpringBoot提供的默认格式化输出如下
2014-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52
2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1358 ms
2014-03-05 10:57:51.698 INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2014-03-05 10:57:51.702 INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
ERROR
>WARN
>INFO
>DEBUG
>TRACE
----
分隔符,用于区分实际日志消息的开始
Logback
没有FATAL
级别。 它被替换为ERROR
默认情况下,SpringBoot只会在控制台输出 INFO
及以上级别(WARN
、ERROR
)的日志。如果你想输出 DEBUG
级别的日志,可以通过以下两种方法:
1. 在运行SpringBoot应用 jar
包时指定 --debug
参数:
java -jar myApp.jar --debug
2. 或者在你的 application.properties
中添加 debug=true
SpringBoot默认只将日志输出到控制台,如果你想也将它输出到文件中那么你可以在 application.properties
中设置 logging.file
输出到指定的文件中或设置logging.path
输出到指定的目录下(可以是相对目录也可以是绝对目录)。
如 logging.file=my.log
则会输出到 classpath
下, loggging.file=/var/log
则会输出日志到/var/log
目录下(自动生成文件)。
你还可以通过logging.file.max-size
指定当设置输出日志到指定目录下时,日志文件大小达到多少就轮询创建新的日志文件。
所有支持 logging
的系统(框架)都可以在application.properties
中设置一个不同的日志级别:
logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
如果你的应用引入了 starter-xx
依赖,SpringBoot默认会采用 logback
日志系统,如果你想使用 log4j
或 Java Util Logging
则需要配置 org.springframework.boot.logging.LoggingSystem=Log4j2
或 org.springframework.boot.logging.LoggingSystem =JDK
并且如果采用的 logback
,则SpringBoot会默认加载 classpath
下的logback-spring.xml
或 logback-spring.groovy
或 logback.xml
或 logback.groovy
作为它的配置文件;如果采用的 log4j2
则默认加载 log4j2-spring.xml
或 log4j2.xml
;如果采用的 JDK
,则默认加载 logging.properties
logback-spring.xml
举例
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
ERROR
DENY
ACCEPT
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
app_log/log/app.info.%d.log
ERROR
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
app_log/log/app.err.%d.log
1
Spring Environment | System Property | Comments |
---|---|---|
logging.exception-conversion-word |
LOG_EXCEPTION_CONVERSION_WORD |
The conversion word used when logging exceptions. |
logging.file |
LOG_FILE |
If defined, it is used in the default log configuration. |
logging.file.max-size |
LOG_FILE_MAX_SIZE |
Maximum log file size (if LOG_FILE enabled). (Only supported with the default Logback setup.) |
logging.file.max-history |
LOG_FILE_MAX_HISTORY |
Maximum number of archive log files to keep (if LOG_FILE enabled). (Only supported with the default Logback setup.) |
logging.path |
LOG_PATH |
If defined, it is used in the default log configuration. |
logging.pattern.console |
CONSOLE_LOG_PATTERN |
The log pattern to use on the console (stdout). (Only supported with the default Logback setup.) |
logging.pattern.dateformat |
LOG_DATEFORMAT_PATTERN |
Appender pattern for log date format. (Only supported with the default Logback setup.) |
logging.pattern.file |
FILE_LOG_PATTERN |
The log pattern to use in a file (if LOG_FILE is enabled). (Only supported with the default Logback setup.) |
logging.pattern.level |
LOG_LEVEL_PATTERN |
The format to use when rendering the log level (default %5p ). (Only supported with the default Logback setup.) |
PID |
PID |
The current process ID (discovered if possible and when not already defined as an OS environment variable). |
学习资料下载:白玉搜一搜