由一個錯誤而引發的問題,錯誤如下:
log4j:WARN No appenders could be found for logger (org.springframework.web.context.support.Standard
log4j:WARN Please initialize the log4j system properly.
但是我並沒有做改動,爲啥忽然就罷工了呢,於是在網上找了很多大神的,但都無濟於事,我就把idea重啓了幾次,就好了,你說神奇不神奇,看來重啓軟件或電腦實在是好辦法,本來有問題,重啓之後就都解決了。
另外一個意外的收穫來自於:原文鏈接
從這裏我知道了還有一個log4j的升級版是log4j2,於是我把我的log4j改爲了log4j2;
我把要排除舊的包搬過來了,哎呀媽呀,累慘我了,如下:
<exclusions>
<!-- log4j 相關包 -->
<exclusion>
<artifactId>log4j</artifactId>
<groupId>log4j</groupId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<!-- log4j 的springboot starter -->
<exclusion>
<artifactId>spring-boot-starter-log4j</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
<!-- logback 相關包 -->
<exclusion>
<artifactId>logback-classic</artifactId>
<groupId>ch.qos.logback</groupId>
</exclusion>
<exclusion>
<artifactId>logback-core</artifactId>
<groupId>ch.qos.logback</groupId>
</exclusion>
<!-- slf4j 相關包 -->
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
<exclusion>
<artifactId>log4j-to-slf4j</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
注:因爲每個項目的pom.xml多種多樣,所以無法總結統一的排除方案,這裏只彙總需要排除的包
pom中的依賴參照:原文鏈接
加上log4j2的依賴包
<!-- log4j2的api、core和web包 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.11.1</version>
</dependency>
<!-- slf4j與log4j2的連接包 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.11.1</version>
</dependency>
<!-- log4j與log4j2的連接包 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.11.1</version>
</dependency>
<!-- log4j2支撐完全異步模式的關鍵api -->
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.4.2</version>
</dependency>
<!-- slf4j本身的api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
最後log4j2的配置文件:來自於 原文鏈接 嘿嘿,我小做了修改
<?xml version="1.0" encoding="UTF-8"?>
<!--日誌級別以及優先級排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration後面的status,這個用於設置log4j2自身內部的信息輸出,可以不設置,當設置成trace時,你會看到log4j2內部各種詳細輸出-->
<!--monitorInterval:Log4j能夠自動檢測修改配置 文件和重新配置本身,設置間隔秒數-->
<configuration status="WARN" monitorInterval="30" packages="org.apache.logging.log4j.core.layout">
<Properties>
<Property name="baseDir">logs</Property>
</Properties>
<!--先定義所有的appender-->
<appenders>
<!-- 這個輸出控制檯的配置 -->
<Console name="Console" target="SYSTEM_OUT">
<!-- 控制檯只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch) -->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<!-- 這個都知道是輸出日誌的格式 -->
<PatternLayout pattern="[%date{DEFAULT}]-[%highlight{%level}]-[%threadName]-[%-class{4}:%line]-%msg%n"/>
</Console>
<!-- 這個會打印出所有的info及以下級別的信息,每次大小超過size,則這size大小的日誌會自動存入按年份-月份建立的文件夾下面並進行壓縮,作爲存檔-->
<RollingFile name="RollingFileInfo" fileName="${baseDir}/all.log"
filePattern="${baseDir}/$${date:yyyy-MM}/all-%d{yyyy-MM-dd}-%i.log">
<!--控制檯只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="[%date{DEFAULT}]-[%level]-[%threadName]-[%logger{1}]-%msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="500 MB"/>
</Policies>
</RollingFile>
<RollingFile name="RollingFileWarn" fileName="${baseDir}/warn.log"
filePattern="${baseDir}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="[%date{DEFAULT}]-[%level]-[%threadName]-[%logger{1}]-%msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<!-- DefaultRolloverStrategy屬性如不設置,則默認爲最多同一文件夾下7個文件,這裏設置了20 -->
<DefaultRolloverStrategy max="20"/>
</RollingFile>
<RollingFile name="RollingFileErrorCommon" fileName="${baseDir}/errorc.log"
filePattern="${baseDir}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="[%date{DEFAULT}]-[%level]-[%threadName]-[%logger{1}]-%msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
</RollingFile>
<!--OTS ERRO-->
<RollingFile name="RollingFileOtsError" fileName="../${baseDir}/ots-error.log"
filePattern="../${baseDir}/$${date:yyyy-MM}/ots-error-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="[%date{DEFAULT}]-[%level]-[%threadName]-[%logger{1}]-%msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
</RollingFile>
</appenders>
<!--然後定義logger,只有定義了logger並引入的appender,appender纔會生效-->
<loggers>
<!--過濾掉spring和mybatis的一些無用的DEBUG信息-->
<logger name="org.springframework" level="DEBUG"></logger>
<logger name="org.mybatis" level="DEBUG"></logger>
<logger name="com.alicloud.openservices.tablestore" level="ERROR" additivity="false">
<appender-ref ref="RollingFileOtsError"/>
</logger>
<root level="INFO">
<appender-ref ref="Console"/>
<appender-ref ref="RollingFileInfo"/>
<appender-ref ref="RollingFileWarn"/>
<appender-ref ref="RollingFileErrorCommon"/>
</root>
</loggers>
</configuration>
與君互勉!!!