这个问题似乎与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