天天看點

slf4j + log4j2

SLF4J,即簡單日志門面(Simple Logging Facade for Java),不是具體的日志解決方案,它隻服務于各種各樣的日志系統,如:log4j,logback。按照官方的說法,SLF4J是一個用于日志系統的簡單Facade,允許最終使用者在部署其應用時使用其所希望的日志System。

pom.xml中隻加入 slf4j-api,會報下面的錯,說明沒有日志實作綁定。

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

是以slf4j需要實作日志系統,這裡比如log4j。主要需要slf4j-api、log4j-api、log4j-core、log4j-slf4j-impl四個包。log4j-slf4j-impl的版本同log4j。

<properties>
        <slf4j.version>1.7.28</slf4j.version>
        <log4j.version>2.12.1</log4j.version>
    </properties>

    <dependencies>
        <!-- slf4j的接口包以及對應日志架構的驅動包 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <!-- log4j-api -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <!-- 日志架構核心包與接口包 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <scope>runtime</scope>
            <version>${log4j.version}</version>
        </dependency>
        <!--用于slf4j與log4j2橋接 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <scope>runtime</scope>
            <version>${log4j.version}</version>
        </dependency>
    </dependencies>           

代碼中使用

object Test {
  def main(args: Array[String]): Unit = {
    val logger = LoggerFactory.getLogger(Test.getClass)
    logger.info("========test========")
  }
}           
public class Test {
    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(Test.class);
        logger.info("========test========");
    }
}