Java slf4j log4j hello world问题

Java slf4j log4j hello world问题,java,maven,java-8,log4j,slf4j,Java,Maven,Java 8,Log4j,Slf4j,我试图寻找一个解决我的错误的方法,但是,由于类似的问题被问了很多,结果的沼泽没有帮助我找到问题的答案 我基本上是想用log4j在slf4j中创建一个简单的“helloworld”,这样以后我就可以进一步定制它了 我的项目基本上是maven hello world项目,稍作调整: App.java: package xx.xxxx.logging; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class App

我试图寻找一个解决我的错误的方法,但是,由于类似的问题被问了很多,结果的沼泽没有帮助我找到问题的答案

我基本上是想用log4j在slf4j中创建一个简单的“helloworld”,这样以后我就可以进一步定制它了

我的项目基本上是maven hello world项目,稍作调整:

App.java:

package xx.xxxx.logging;

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

public class App {

    private static final Logger LOGGER = LoggerFactory.getLogger(App.class);

    public static void main(String[] args) {
        System.out.println("Hello World!");

        LOGGER.info("Hello Logger!");
    }
}
log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

        <Appenders>
                <Console name="STDOUT" target="System.out">
                        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
                </Console>
        </Appenders>

        <Loggers>
                <Root level="ALL">
                        <AppenderRef ref="STDOUT"/>
                </Root>
        </Loggers>

</Configuration>

pom.xml:

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>xx.xxxx.logging</groupId>
  <artifactId>logging-test</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>

  <name>logging-test</name>

  <properties>
    <jdk.version>1.8</jdk.version>
    <java.version>1.8</java.version>

    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
    <sonar.java.source>${java.version}</sonar.java.source>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <version.sl4j>1.7.21</version.sl4j>
    <version.sl4j.log4j>2.0.1</version.sl4j.log4j>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${version.sl4j}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>${version.sl4j.log4j}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>${version.sl4j.log4j}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <version>${version.sl4j.log4j}</version>
    </dependency>
  </dependencies>

</project>

4.0.0
xx.xxxx.log
测井试验
罐子
1.0-快照
测井试验
1.8
1.8
${java.version}
${java.version}
${java.version}
UTF-8
1.7.21
2.0.1
org.slf4j
slf4j api
${version.sl4j}
org.apache.logging.log4j
log4japi
${version.sl4j.log4j}
org.apache.logging.log4j
log4j型芯
${version.sl4j.log4j}
org.apache.logging.log4j
log4j-slf4j-impl
${version.sl4j.log4j}
尝试运行App.java会产生以下错误:

2017-12-07 11:14:33,263 ERROR catching java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:133)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:744)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:683)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:675)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:349)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:150)
    at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:364)
    at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:422)
    at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:146)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:75)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:37)
    at org.apache.logging.log4j.LogManager.getContext(LogManager.java:263)
    at org.apache.logging.slf4j.Log4jLoggerFactory$PrivateManager.getContext(Log4jLoggerFactory.java:98)
    at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:84)
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:44)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:358)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383)
    at xx.xxxx.logging.App.<clinit>(App.java:8)
Caused by: java.lang.IllegalArgumentException: No enum constant org.apache.logging.log4j.core.appender.ConsoleAppender.Target.System.out
    at java.lang.Enum.valueOf(Enum.java:238)
    at org.apache.logging.log4j.core.appender.ConsoleAppender$Target.valueOf(ConsoleAppender.java:57)
    at org.apache.logging.log4j.core.appender.ConsoleAppender.createAppender(ConsoleAppender.java:98)
    ... 22 more

2017-12-07 11:14:33,268 ERROR Unable to invoke factory method in class class org.apache.logging.log4j.core.appender.ConsoleAppender for element Console.
2017-12-07 11:14:33,269 ERROR Null object returned for Console in Appenders.
2017-12-07 11:14:33,275 ERROR Unable to locate appender STDOUT for logger 
Hello World!
2017-12-07 11:14:33263捕获java.lang.reflect.InvocationTargetException时出错
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:133)
位于org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:744)
位于org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:683)
位于org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:675)
位于org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:349)
位于org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:150)
位于org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:364)
位于org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:422)
位于org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:146)
位于org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:75)
位于org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:37)
位于org.apache.logging.log4j.LogManager.getContext(LogManager.java:263)
位于org.apache.logging.slf4j.Log4jLoggerFactory$PrivateManager.getContext(Log4jLoggerFactory.java:98)
位于org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:84)
位于org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:44)
位于org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:358)
位于org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383)
在xx.xxxx.logging.App.(App.java:8)
原因:java.lang.IllegalArgumentException:No enum constant org.apache.logging.log4j.core.appender.ConsoleAppender.Target.System.out
位于java.lang.Enum.valueOf(Enum.java:238)
位于org.apache.logging.log4j.core.appender.ConsoleAppender$Target.valueOf(ConsoleAppender.java:57)
位于org.apache.logging.log4j.core.appender.ConsoleAppender.createAppender(ConsoleAppender.java:98)
... 还有22个
2017-12-07 11:14:33268错误无法调用元素控制台的类org.apache.logging.log4j.core.appender.ConsoleAppender中的工厂方法。
2017-12-07 11:14:33269 Appenders中为控制台返回了错误Null对象。
2017-12-07 11:14:33275错误无法找到记录器的appender标准输出
你好,世界!
任何关于如何解决此问题的线索都将不胜感激。

target=“System.out”
显然是不正确的。它与ConsolePender.Target枚举相关。我假设您希望
target=“SYSTEM\u OUT”
符合

或者忽略该属性,因为默认情况下它已经是
SYSTEM\u OUT

target=“SYSTEM.OUT”
显然不正确。它与ConsolePender.Target枚举相关。我假设您希望
target=“SYSTEM\u OUT”
符合


或者省略该属性,因为默认情况下它已经是
SYSTEM\u OUT

根据


%d{yyyy-MM-dd HH:MM:ss}%-5p%c{1}:%L-%m%n

根据以下说明尝试遵循log4j语法


%d{yyyy-MM-dd HH:MM:ss}%-5p%c{1}:%L-%m%n

原因:java.lang.IllegalArgumentException:No enum constant org.apache.logging.log4j.core.appender.consoleApender.Target.System.out
尝试替换为
System\u out
谢谢,这正是错误。
原因:java.lang.IllegalArgumentException:No enum constant org.apache.logging.log4j.core.appender.ConsoleAppender.Target.System.out
尝试替换为
System\u out
谢谢,这正是错误所在。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
        <Appenders>
          <Console name="Console-Appender" target="SYSTEM_OUT">
             <PatternLayout>
               <pattern>
                   %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
               </pattern>
             </PatternLayout>
          </Console>
        </Appenders>

      <Loggers>
         <Root level="ALL">
             <AppenderRef ref="Console-Appender"/>
         </Root>
      </Loggers>
 </Configuration>