目錄
官方文檔
官網文檔:Logging
logback日誌
logback是springboot默認使用的日誌,默認級別INFO。比log4j效率更高,且實現了slf4j接口。實際日誌都是在運行時binding的具體實現類。
默認情況下spring-boot-starter已經包含了logback,所以我們啓動項目時沒有配置日誌也會正常打印日誌。默認配置在org.springframework.boot.logging.logback.base.xml ,僅是簡單更改的話不需要用到下邊的配置文件,在application.properties或者application.yml更改相關配置就可以了。比如logging.file設置文件logging.path設置目錄。
如果我們需要更改更多詳細配置:可以在src/main/resources/下添加logback.xml或者logback-spring.xml(官方建議)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<contextName>logback</contextName>
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<property name="log.path" value="/milo/test.log" />
<!--輸出到控制檯-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>-->
<encoder>
<pattern>%clr(%d{HH:mm:ss.SSS}){red} %clr(%contextName){green} %clr([%thread]) %clr(%-5level){blue} %clr(%logger{36}){magenta} - %clr(%msg%n)</pattern>
</encoder>
</appender>
<!--輸出到文件-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logback.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
<!-- logback爲java中的包 -->
<!--<logger name="com.dudu.controller"/>-->
<!--logback.LogbackDemo:類的全路徑 -->
<!--<logger name="com.dudu.controller.LearnController" level="WARN" additivity="true">-->
<!--<appender-ref ref="console"/>-->
<!--</logger>-->
<!-- 測試環境+開發環境. 多個使用逗號隔開. -->
<springProfile name="dev">
<logger name="cn.milo.controllor" level="DUBUG" />
</springProfile>
<!-- 生產環境. -->
<springProfile name="prod">
<logger name="cn.milo.controllor" level="INFO" />
</springProfile>
</configuration>
具體配置大家自行查閱吧,大同小異。我的這個配置也是網上找的。
類中聲明變量:
Logger logger = LoggerFactory.getLogger(SampleController.class);
logback詳細介紹 : http://blog.csdn.net/gebitan505/article/details/70142155?locationNum=1&fps=1
log4j2日誌
更改pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<!-- 排除默認日誌包 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 添加log4j包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
否則會出現slf4j綁定兩個實現類的情況:
log4j2.xml 配置方法
在application.properties或者application.yml增加配置,我用的yml(如果這裏是log4j2.xml或者log4j2-spring.xml可以不加下邊這個配置。springboot可以識別)
logging:
config: classpath:log4j2-demo.xml #如果名字非og4j2.xml或者log4j2-spring.xml需加上這個配置。
src/main/resources/增加log4j2.xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<properties>
<!-- 文件輸出格式 -->
<property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n</property>
</properties>
<appenders>
<Console name="CONSOLE" target="system_out">
<PatternLayout pattern="${PATTERN}" />
</Console>
</appenders>
<loggers>
<logger name="cn.milo.controllor" level="debug" />
<root level="info">
<appenderref ref="CONSOLE" />
</root>
</loggers>
</configuration>
log4j2.yml配置方法
不需要在application.properties或者application.yml增加配置,但要增加一個依賴包
pom.xml
<!-- 加上這個才能辨認到log4j2.yml文件 -->
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
</dependency>
log4j2.yml
Configuration:
status: warn
Properties: # 定義全局變量
Property: # 缺省配置(用於開發環境)。其他環境需要在VM參數中指定,如下:
#測試:-Dlog.level.console=warn -Dlog.level.xjj=trace
#生產:-Dlog.level.console=warn -Dlog.level.xjj=info
- name: log.level.console
value: trace
- name: log.level.xjj
value: trace
- name: log.path
value: /opt/logs
- name: project.name
value: my-spring-boot
Appenders:
Console: #輸出到控制檯
name: CONSOLE
target: SYSTEM_OUT
ThresholdFilter:
level: ${sys:log.level.console} # “sys:”表示:如果VM參數中沒指定這個變量值,則使用本文件中定義的缺省全局變量值
onMatch: ACCEPT
onMismatch: DENY
PatternLayout:
pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n"
RollingFile: # 輸出到文件,超過128MB歸檔
- name: ROLLING_FILE
ignoreExceptions: false
fileName: /milo/test2.log
filePattern: "${log.path}/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
PatternLayout:
pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n"
Policies:
SizeBasedTriggeringPolicy:
size: "128 MB"
DefaultRolloverStrategy:
max: 1000
Loggers:
Root:
level: info
AppenderRef:
- ref: CONSOLE
- ref: ROLLING_FILE
Logger: # 爲com.xjj包配置特殊的Log級別,方便調試
- name: com.xjj
additivity: false
level: ${sys:log.level.xjj}
AppenderRef:
- ref: CONSOLE
- ref: ROLLING_FILE