SLF4J和Log4j的2结合Maven的依赖 [英] SLF4J and Log4j 2 binding Maven dependency

查看:1007
本文介绍了SLF4J和Log4j的2结合Maven的依赖的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

希望一个简单的问题,但我的谷歌富失败我 - 我已经得到了我们使用SLF4J Log4J的使用绑定1.2凡Maven项目

我们现在要移动到Log4j的2特别是对性能的提高 - 但是,我不能为我的生活寻找结合log4j的2.0 maven的依赖。我发现一些笔记在 http://logging.apache.org /log4j/2.x/log4j-slf4j-impl/ 但没有提到任何相关性信息。

我也有小幅的事实弄得有明显把SLF4J上log4j2之上两种方式(绑定或适配器)

什么是绑定SLF4J与log4j2正确的方法以及如何定义Maven依赖?

编辑添加一些code按照下面的第一个答案,我发现了异常:


  

异常线程mainjava.lang.NoSuchMethodError:
  org/apache/logging/log4j/spi/AbstractLoggerWrapper.(Lorg/apache/logging/log4j/spi/AbstractLogger;Ljava/lang/String;)V
    在org.slf4j.impl.SLF4JLogger(SLF4JLogger.java:48)


POM:

 <项目的xmlns =htt​​p://maven.apache.org/POM/4.0.0的xmlns:XSI =htt​​p://www.w3.org/2001 / XML模式实例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 GT; logging.test< /的groupId>
<&的artifactId GT; logtest2< / artifactId的>
<&版GT; 0.0.1< /版本>
<名称>&logtest2 LT; /名称>
<描述> logtest2< /描述>
<建立>
    <&插件GT;
        <&插件GT;
            <&的artifactId GT; Maven的编译器插件< / artifactId的>
            <&版GT; 3.1< /版本>
            <结构>
                <信源> 1.6 LT; /源>
                <目标> 1.6 LT; /目标与GT;
            < /结构>
        < /插件>
    < /插件>
< /构建>
<依赖和GT;
    <&依赖性GT;
        <&的groupId GT; org.slf4j< /的groupId>
        <&的artifactId GT; SLF4J的API< / artifactId的>
        <&版GT; 1.7.5< /版本>
    < /依赖性>    <&依赖性GT;
        <&的groupId GT; org.apache.logging.log4j.adapters< /的groupId>
        <&的artifactId GT;的log4j-SLF4J-implement执行< / artifactId的>
        <&版GT; 2.0 beta3版< /版本>
    < /依赖性>    <&依赖性GT;
        <&的groupId GT; org.apache.logging.log4j< /的groupId>
        <&的artifactId GT; log4j的核心< / artifactId的>
        <&版GT; 2.0 beta9< /版本>
    < /依赖性>    <&依赖性GT;
        <&的groupId GT; org.apache.logging.log4j< /的groupId>
        <&的artifactId GT;的log4j的API< / artifactId的>
        <&版GT; 2.0 beta9< /版本>
    < /依赖性>
< /依赖和GT;

我的log4j.xml:

 <?XML版本=1.0编码=UTF-8&GT?; !< D​​OCTYPE的log4j:配置PUBLIC -  // APACHE // DTD LOG4J 1.2 // ENlog4j.dtd> < log4j的:配置的xmlns:log4j的=htt​​p://jakarta.apache.org/log4j/>
    <追加程序名称=A1级=org.apache.log4j.FileAppender>
        < PARAM NAME =文件VALUE =C:/logtest2.0/log.txt/>
        < PARAM NAME =追加VALUE =FALSE/>
        <布局类=org.apache.log4j.PatternLayout>
            < PARAM NAME =ConversionPattern值=%D%P%X {}的sessionId%C味精:%M%N/>
        < /布局>
    < /附加器>
    <追加程序名称=标准输出级=org.apache.log4j.ConsoleAppender>
        <布局类=org.apache.log4j.PatternLayout>
            < PARAM NAME =ConversionPattern值=%D%P%X {}的sessionId%C味精:%M%N/>
        < /布局>
    < /附加器>
    <类别名称=org.apache.log4j.xml>
        <优先级值=调试/>
        <附加目的地-REF REF =A1/>
    < /类别>
    <根和GT;
        <优先级值=调试/>
        <附加目的地-REF REF =标准输出/>
    < /根> < / log4j的:结构>

和我的测试Java类:

 包loggertest;进口org.slf4j.Logger;
进口org.slf4j.LoggerFactory;公共类LoggerTest {    公共静态最后记录仪记录仪= LoggerFactory.getLogger(LoggerTest.class);    公共静态无效的主要(最终的String [] p_args)抛出InterruptedException的{
        LOGGER.debug(记录器测试);
    }
}


解决方案

 org.apache.logging.log4j:log4j的-SLF4J-implement执行:2.0 beta9 - 
            Log4j实现SLF4J的API
org.apache.logging.log4j:log4j的核心:2.0 beta9 - 核心Log4j实现

此,再加上类路径的有效log4j2.xml应该让你开始。

Hopefully a simple question but My google foo is failing me - I've got a maven project where we're using SLF4J with Log4J 1.2 bindings.

We now want to move to Log4j 2 particularly for the performance improvement - however, I can't for the life of me find the maven dependency for the log4j 2.0 binding. I've found some notes at http://logging.apache.org/log4j/2.x/log4j-slf4j-impl/ but no mention of any dependency info.

I'm also slightly confused by the fact there's apparently two ways to put slf4j on top of log4j2 (binding or adaptor)

What's the correct way to bind slf4j with log4j2 and how do I define the maven dependencies?

Editing to add some code following the 1st answer below, I'm getting exception:

Exception in thread "main" java.lang.NoSuchMethodError: org/apache/logging/log4j/spi/AbstractLoggerWrapper.(Lorg/apache/logging/log4j/spi/AbstractLogger;Ljava/lang/String;)V at org.slf4j.impl.SLF4JLogger.(SLF4JLogger.java:48)

POM:

<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>logging.test</groupId>
<artifactId>logtest2</artifactId>
<version>0.0.1</version>
<name>logtest2</name>
<description>logtest2</description>
<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.5</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j.adapters</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.0-beta3</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.0-beta9</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.0-beta9</version>
    </dependency>
</dependencies>

My log4j.xml:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="A1" class="org.apache.log4j.FileAppender">
        <param name="File" value="c:/logtest2.0/log.txt" />
        <param name="Append" value="false" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d %p %X{sessionId} %c MSG: %m%n" />
        </layout>
    </appender>
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d %p %X{sessionId} %c MSG: %m%n" />
        </layout>
    </appender>
    <category name="org.apache.log4j.xml">
        <priority value="debug" />
        <appender-ref ref="A1" />
    </category>
    <root>
        <priority value="debug" />
        <appender-ref ref="STDOUT" />
    </Root> </log4j:configuration>

and my test java class:

package loggertest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LoggerTest {

    public static final Logger LOGGER = LoggerFactory.getLogger(LoggerTest.class);

    public static void main(final String[] p_args) throws InterruptedException {
        LOGGER.debug("Logger test");
    }
}

解决方案

"org.apache.logging.log4j:log4j-slf4j-impl:2.0-beta9" - 
            LOG4J implementation of SLF4J API
"org.apache.logging.log4j:log4j-core:2.0-beta9" - Core LOG4J implementation

This, plus a valid log4j2.xml on the classpath should get you started.

这篇关于SLF4J和Log4j的2结合Maven的依赖的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆