這個問題似乎與Using Logback but Log4j started displaying WARN no Appenders有關,但答案似乎並沒有解決這個問題。與SLF4J參考空maven項目有log4j「沒有appender可以發現」警告
當我創建一個比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] ------------------------------------------------------------------------
非常有趣。 [「Java開發指南for Mac」](http://developer.apple.com/library/mac/#documentation/Java/Conceptual/Java14Development/01-JavaOverview/JavaOverview.html#//apple_ref/doc/uid/ TP40001883-SW1)似乎暗示該目錄供用戶添加庫。你確定你或其他人沒有把那些東西放在那裏,甚至是偶然的?對於OS X來說,默認情況下,這似乎完全是瘋狂的。 – 2013-02-20 23:45:31
@RyanStewart,它看起來很瘋狂......我不記得在這些庫中加入。我是電腦的唯一用戶。也許他們與其他應用程序一起安裝,儘管這似乎是非常糟糕的形式。 – studds 2013-02-22 02:57:21
Google'd並找到http://www.geniuswiki.com/page#%2FGeniusWiki%2Bdocument%2FInstall%2Band%2Bupgrade,它說它包含在OSX中,但也包含http://issues.gradle.org/browse/GRADLE -1451表示他們帶着我過去安裝的AUSKey--所以不是100%肯定的。 – studds 2013-02-22 03:02:37