1. 程式人生 > >spring boot 整合 log4j 解決與logback衝突問題

spring boot 整合 log4j 解決與logback衝突問題

現在很流行springboot的開發,小編閒來無事也學了學,開發過程中遇見了log4j日誌的一個小小問題,特此記載。

首先在pox.xml中引入對應的maven依賴:

        <!-- 引入log4j-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j</artifactId>
            <version>1.3.8.RELEASE</version>
        </dependency>

然後在src/resources/下新建log4j.properties檔案(摘抄自網上):

log4j.rootLogger=info,error,CONSOLE,DEBUG
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold = info
log4j.appender.info.append=true
log4j.appender.info.File=d://springboot3/logs/api_services_info.log
log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = error
log4j.appender.error.append=true
log4j.appender.error.File=d://springboot3/logs/error/api_services_error.log
log4j.logger.DEBUG=DEBUG
log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout
log4j.appender.DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd
log4j.appender.DEBUG.Threshold = DEBUG
log4j.appender.DEBUG.append=true
log4j.appender.DEBUG.File=d://springboot3/logs/debug/api_services_debug.log

在application.yml中加入如下配置:

logging:
  config: src/main/resources/log4j.properties

至此,log4j的配置完畢,啟動專案,發現會報錯:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/tony/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/tony/.m2/repository/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
12:02:26.963 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Included patterns for restart : []
12:02:26.969 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Excluded patterns for restart : [/spring-boot-actuator/target/classes/, /spring-boot-devtools/target/classes/, /spring-boot/target/classes/, /spring-boot-starter-[\w-]+/, /spring-boot-autoconfigure/target/classes/, /spring-boot-starter/target/classes/]
12:02:26.969 [main] DEBUG org.springframework.boot.devtools.restart.ChangeableUrls - Matching URLs for reloading : [file:/F:/work_intel/code/demo1/target/classes/]
Logging system failed to initialize using configuration from 'src/main/resources/log4j.properties'

這是因為與logback的衝突並未解決,導致啟動失敗,根據上面的報錯資訊,找到logback-classic-1.2.3.jar和slf4j-log4j12-1.7.25.jar的相應位置刪除,並在pom.xml中加入如下排除程式碼:

     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 排除預設的logback日誌,使用log4j-->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

啟動發現一切正常,至此,log4j的配置完畢。

相關推薦

spring boot 整合 log4j 解決logback衝突問題

現在很流行springboot的開發,小編閒來無事也學了學,開發過程中遇見了log4j日誌的一個小小問題,特此記載。 首先在pox.xml中引入對應的maven依賴: <!-- 引入log4j--> <dependency

Spring Boot 整合 log4j 實現日誌管理報錯:java.lang.IllegalArgumentException: LoggerFactory is not a Logback

問題: Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Log

spring-boot 整合 log4j 記錄日誌

1.pom檔案中移除和新增依賴 <!-- 移除boot—starter 的log4j --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sprin

Spring Boot 整合 log4j 實現日誌管理

摘要:最近有時間,系統的學習了一下Spring Boot框架,感覺Spring Boot很好的集成了各種框架和元件,之前我們用Spring的時候,要配置好的依賴和xml檔案,現在使用Spring Boot,只需要一些少量的配置就可以實現。今天我們來看下Spring Boot

Spring Boot 整合 Seata 解決分散式事務問題

seata 簡介 Seata 是 阿里巴巴2019年開源的分散式事務解決方案,致力於在微服務架構下提供高效能和簡單易用的分散式事務服務。在 Seata 開源之前,Seata 對應的內部版本在阿里內部一直扮演著分散式一致性中介軟體的角色,幫助阿里度過歷年的雙11,對各業務進行了有力的支撐。經過多年沉澱與積累,2

Spring Boot 整合 Apache Solr 異常:Expected mime type application/octet-stream but got text/html 的解決.

註釋 info 過時 查看 異常 dea 沒有 時間 發的 解決方法:Spring Data Solr 3.0 以上版本 將@SolrDocument(solrCoreName = "new_core") 中的solrCoreName 字段改為使用collection字段

Spring Boot學習總結】14.Spring Boot整合Redis-傳統方式對比

前面我們講解了如何使用Spring Boot來控制事務,下面我們來講解一下如何使用Spring Boot來整合Redis 為了對比傳統工程與Spring Boot整合的不同,以及彰顯Spring Boot整合的優勢,我們會逐一剖析傳統整合方式與Spring Boot整合方式。 一、傳統方式整

Spring Boot 整合Mybatis非starter時,mapper一直無法注入解決

本來呢,直接使用mybatis-spring-boot-starter還是挺好的,但是我們系統比較複雜,有多個數據源,其中一個平臺自己的資料來源,另外一些是動態配置出來的,兩者完全沒有關係。所以直接使用mybatis-spring-boot-starter就很麻煩了,會報下列錯誤: Caused by

Spring Boot 整合之檔案上傳下載

1.匯入依賴 <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId>

FastDFSspring boot整合

在專案Pom當中加入依賴 Maven依賴為 com.github.tobato fastdfs-client 1.26.3 將Fdfs配置引入專案 將FastDFS-Client客戶端引入本地化專案的方式非常簡單,在SpringBoot專案/src/[com.xxx.

activemq 學習系列(五) activemq spring boot 整合

-a pool autowire mapping pri control ESS fin tid activemq 與 spring boot 整合 1、添加依賴 <dependency> <groupId>

Spring Boot 全域性異常處理 Hibernate Validator校驗框架整合

Hibernate Validator校驗框架的使用 Spring boot已經集成了hibernate-validator,不需要引入maven,其他框架也可以自己引入: <dependency> <groupId>org.h

Spring Boot學習筆記(一)JSP整合

專案結構展示 在webapp目錄下面手動建立JSP的目錄和web.xml 建立web.xml只是為了不報錯,在SpringBoot的專案中實際上用不到web.xml 開啟pom.xml把框住的地方改成war,也就是maven的打包方式,預設的jar,如果要在專案中使用jsp的話就要改成war

spring boot整合mybatis查詢資料庫返回Map欄位為空不返回解決

1.出現問題原因 原因1:mybatis的配置即mapper返回對映配置。 原因2:jackson的配置即@ResponseBody序列化配置。 2.解決方式 步驟1:解決原因1 mybatis:configuration: call-setters

Spring Boot 整合dubbozookeeper實現不同專案之間資料通過服務的傳遞

一、安裝zookeeper 1、下載路徑:http://mirrors.hust.edu.cn/apache/zookeeper/ 可以自己選擇版本進行下載(同時支援windows和linux) 2、目錄結構 3、修改conf下的配置檔案zoo.cfg 4、

spring-boot整合mybatis的時候使用logback列印日誌

加入logback-spring.xml檔案即可 <?xml version="1.0" encoding="utf-8" ?> <configuration> <appender name="consoleLog" class="ch.

Spring Boot整合Hazelcast實現叢集分散式記憶體快取

Hazelcast是Hazelcast公司開源的一款分散式記憶體資料庫產品,提供彈性可擴充套件、高效能的分散式記憶體計算。並通過提供諸如Map,Queue,ExecutorService,Lock和JCache等Java的許多開發人員友好的分散式實現。 瞭解Hazelcast Hazelcast特性 簡單易

Thymeleaf Or Freemarker Spring boot 整合

整體步驟:(1)            在pom.xml中引入thymeleaf;(2)            如何關閉thymeleaf快取(3)            編寫模板檔案.htmlSpring Boot預設就是使用thymeleaf模板引擎的,所以只需要在pom.xml加入依賴即可:<de

Maven專案中,關於Spring Boot 整合MyBatis時,Service層無法找到mapper介面的問題解決

mybatis: mapperlocations: classpath:com/xxx/xxx/dao/mapper/*.xml -----掃描對映檔案 config-location: classpath:mybatis-config.xml ------掃描配置檔案注意:路徑要以/ 分割3 M

SpringData JPA 、HibernateSpring Boot整合

dependencies { compile('org.springframework.boot:spring-boot-starter-web') //新增thymeleaf依賴 compile('org.springframework.boot:spring