如何获得使用log4j的SLF4J“Hello World”?
SLF4J的“Hello World”例子对我来说不起作用。 我想这是因为我添加了slf4j-log4到我的类path。 我应该直接configurationlog4j让hello世界起作用吗?
log4j:WARN No appenders could be found for logger (HelloWorld). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
更新 :我添加了log4j初始化,它仍然无法正常工作:
public static void main(String[] params) { org.apache.log4j.Logger.getRootLogger().addAppender(new ConsoleAppender()); Logger logger = org.slf4j.LoggerFactory.getLogger(TestBase.class); logger.info("Hello World"); }
我得到:
log4j:ERROR No output stream or file set for the appender named [null].
如果你想使用slf4j simple
,你需要在你的类path上的这些jar
文件:
- SLF4J-API-1.6.1.jar
- SLF4J-简单1.6.1.jar
如果你想使用slf4j
和log4j
,你需要在你的类path中使用这些jar
文件:
- SLF4J-API-1.6.1.jar
- SLF4J-log4j12-1.6.1.jar
- log4j的-1.2.16.jar
没有更多,不能less。 slf4j simple
使用slf4j simple
,你就可以在INFO
级别或者更高的级别获得基本的日志logging。 使用log4j
,你必须相应地configuration它 。
以下是一个例子。 您可以查看详细信息http://www.luyue.org/configure-slf4j-working-various-logging-frameworks并在此处下载完整的代码。;
-
如果你正在使用maven,那么添加下面的依赖到你的pom,否则,只需下载jar文件并放到你的类path中
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.7</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.7</version> </dependency>
-
configurationlog4j.properties
log4j.rootLogger=TRACE, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd'T'HH:mm:ss.SSS} %-5p [%c] - %m%n
-
Java示例
public class Slf4jExample { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(Slf4jExample.class); final String message = "Hello logging!"; logger.trace(message); logger.debug(message); logger.info(message); logger.warn(message); logger.error(message); } }
you need to add 3 dependency ( API+ API implementation + log4j dependency) Add also this <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.5</version> </dependency> # And to see log in command line , set log4j.properties # Root logger option log4j.rootLogger=INFO, file, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n #And to see log in file , set log4j.properties # Direct log messages to a log file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=./logs/logging.log log4j.appender.file.MaxFileSize=10MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
我有同样的问题。 直接使用log4j api时,我从代码的log4j.properties文件中调用了自己的自定义logging器。 如果你正在使用slf4j api调用,你可能使用了默认的根logging器,所以你必须configuration它与log4j.properties中的appender相关联:
#将根logging器级别设置为DEBUG,并将其唯一的appender设置为A1。 log4j.rootLogger = DEBUG,A1 #A1被设置为一个ConsoleAppender。 log4j.appender.A1 = org.apache.log4j.ConsoleAppender