0

この質問はLogbackの使用に関連しているようですが、Log4jはWARN no Appendersを表示し始めましたが、そこにある答えは私にとってこれを解決していないようです。

slf4j以外の依存関係のないMavenプロジェクトを作成すると、次の警告が表示されます。

log4j:WARN No appenders could be found for logger (com.example.App).
log4j:WARN Please initialize the log4j system properly.

手順:

空のディレクトリで、を実行します

mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart

Define value for property 'groupId': : com.example
Define value for property 'artifactId': : slf4jtest
Define value for property 'version':  1.0-SNAPSHOT: : 
Define value for property 'package':  com.example: : 

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

  <groupId>com.example</groupId>
  <artifactId>slf4jtest</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>slf4jtest</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.7.2</version>
      </dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.2</version>
</dependency>
  </dependencies>
</project>

App.javaでロガーを起動します

package com.example;

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

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        Logger logger = LoggerFactory.getLogger(App.class);
        logger.debug("hello");
        System.out.println( "Hello World!" );
    }
}

実行する:

mvn package

実行する:

mvn exec:java -Dexec.mainClass="com.example.App"

出力:

log4j:WARN No appenders could be found for logger (com.example.App).
log4j:WARN Please initialize the log4j system properly.
Hello World!

log4jは依存関係としてリストされていません:

$ mvn dependency:tree
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building slf4jtest 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ slf4jtest ---
[INFO] com.example:slf4jtest:jar:1.0-SNAPSHOT
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] \- org.slf4j:slf4j-api:jar:1.7.2:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.872s
[INFO] Finished at: Tue Feb 19 11:23:33 EST 2013
[INFO] Final Memory: 5M/81M
[INFO] ------------------------------------------------------------------------
4

2 に答える 2

1

そのため、MacOSXが/Library/ Java/Extensionsの下にlog4jとslf4jで事前にパッケージ化されていることに気づきませんでした...次のコマンドを実行してこれを発見しました。

java -verbose:class -cp ~/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar:~/.m2/repository/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar:./target/classes com/example/App

...そして(他の多くの中で)これらのクラスがロードされ、Maven経由で含めていたクラスよりも優先して使用されていることがわかりました。

/Library/Java/Extensions/log4j-1.2.15.jar
/Library/Java/Extensions/slf4j-log4j12-1.5.8.jar
/Library/Java/Extensions/slf4j-api-1.5.8.jar

この問題の「正しい」解決策が何であるかはわかりませんが、そのディレクトリからこれらのファイルをすべて削除することでうまくいくようです。

于 2013-02-20T06:42:03.350 に答える
0

複製できません。予想されるSLF4Jバインディングエラーが発生します。

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.
Hello World!

私の依存関係ツリーはあなたのものと同じように見えます:

[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ slf4jtest ---
[INFO] com.example:slf4jtest:jar:1.0-SNAPSHOT
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] \- org.slf4j:slf4j-api:jar:1.7.2:compile
[INFO] ------------------------------------------------------------------------

システム情報:

$ mvn -version
Apache Maven 3.0.4 (r1232337; 2012-01-17 02:44:56-0600)
Maven home: d:\dev\tools\maven
Java version: 1.7.0_03, vendor: Oracle Corporation
Java home: d:\dev\tools\java\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
于 2013-02-19T02:43:33.320 に答える