公衆號 java樂園java
Logback是由log4j創始人設計的又一個開源日誌組件。logback當前分紅三個模塊:logback-core、logback- classic和logback-access。logback-core是其它兩個模塊的基礎模塊。logback-classic是log4j的一個 改良版本。此外logback-classic完整實現SLF4J API使你能夠很方便地更換成其它日誌系統如log4j或JDK14 Logging。logback-access訪問模塊與Servlet容器集成提供經過Http來訪問日誌的功能。 Logback是要與SLF4J結合起來用的。
Logback和log4j是很是類似的,若是你對log4j很熟悉,那對logback很快就會駕輕就熟。spring boot內部使用Commons Logging來記錄日誌,但也保留外部接口可讓一些日誌框架來進行實現,例如Java Util Logging,Log4J2還有Logback。若是想用某一種日誌框架來進行實現的話,就必須先進行配置,默認狀況下spring boot使用Logback做爲日誌實現的框架。spring boot從控制檯打印出來的日誌級別只有ERROR, WARN 還有INFO。
(1)若是你想要打印debug級別的日誌,能夠經過application.yml文件配置:mysql
debug: true
也能夠在啓動腳本添加參數:git
java -jar d: \sc-xxx.jar --debug
(2) 配置logging.level.*來具體輸出哪些包的日誌級別web
logging:
level:
root: INFO
org.springframework.web: DEBUG
org.hibernate: ERRORspring
(3) 將日誌輸出到文件
默認狀況下spring boot是不將日誌輸出到日誌文件中,但能夠經過在application.yml文件中配置logging.file文件名稱和logging.path文件路徑,將日誌輸出到文件sql
logging: path: F:\\springcloudLog file: info.log level root: info
備註:
A、 這裏若不配置具體的包的日誌級別,日誌文件信息將爲空
B、若只配置logging.path,那麼將會在F: springcloudLog文件夾生成一個日誌文件爲spring.log(ps:該文件名是固定的,不能更改)。若是path路徑不存在,會自動建立該文件夾
C、若只配置logging.file,那將會在項目的當前路徑下生成一個info.log日誌文件。這裏可使用絕對路徑如,會自動在d盤下建立文件夾和相應的日誌文件。apache
logging: file: d:\\ springcloudLog \\info.log
D、logging.path和logging.file同時配置,不會在這個路徑有F: springcloudLog info.log日誌生成,logging.path和logging.file不會進行疊加(要注意)
F、logging.path和logging.file的value均可以是相對路徑或者絕對路徑
這就是基礎的日誌配置,能夠直接在application.yml配置,還能夠在classpath路徑下,經過定義具體的日誌文件來配置,例如:logback.xmltomcat
一、 新建項目sc-eureka-client-provider-logback,對應的pom.xml文件以下mybatis
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>spring-cloud</groupId> <artifactId>sc-eureka-client-provider-logback</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>sc-eureka-client-provider-logback</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <!-- 說明是一個 eureka client --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!-- spring boot實現Java Web服務 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 把tomcat-jdbc鏈接池排除掉,這樣spring-boot就會尋找是否有HikariCP可用 --> <exclusions> <exclusion> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> </dependencies> </project>
能夠到默認已經引入logback的jar包app
二、 新建spring boot 啓動類LogbackApplication.java
package sc.provider.logback; //import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @EnableEurekaClient @SpringBootApplication //@MapperScan(basePackages="sc.provider.logback.dao") public class LogbackApplication { public static void main(String[] args) { SpringApplication.run(LogbackApplication.class, args); } }
三、 新建配置文件bootstarp.yml和application.yml
bootstarp.yml
server: port: 7200
application.yml
spring: application: name: sc-eureka-client-provider-logback datasource: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/sc?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8 username: root password: root type: com.zaxxer.hikari.HikariDataSource hikari: minimum-idle: 5 maximum-pool-size: 15 auto-commit: true idle-timeout: 30000 pool-name: DatebookHikariCP max-lifetime: 1800000 connection-timeout: 30000 connection-test-query: SELECT 1 eureka: client: registerWithEureka: true #是否將本身註冊到Eureka服務中,默認爲true fetchRegistry: true #是否從Eureka中獲取註冊信息,默認爲true serviceUrl: defaultZone: http://localhost:5001/eureka/ mybatis: mapper-locations: classpath:sc/provider/logback/dao/*.xml config-location: classpath:mybatis-config.xml type-aliases-package: sc.provider.logback.model logging: level: sc.provider.logback.dao: debug
備註:
能夠看到配置文件application.yml多了以下配置項
四、 項目其餘文件以下圖
五、 啓動註冊中心sc-eureka-server後,啓動項目sc-eureka-client-provider-logback
六、 驗證sc-eureka-client-provider-logback是否啓動成功
七、 訪問相關接口看看是否能打印sql語句,例如訪問獲取用戶接口
http://127.0.0.1:7200/user/getUser/3
查看控制檯:
源碼:
https://gitee.com/hjj520/spring-cloud-2.x/tree/master/sc-eureka-client-provider-logback