java-如何使SLF4J“ Hello World”与log4j一起使用?
SLF4J的“ Hello World”示例对我不起作用。 我猜这是因为我在类路径中添加了slf4j-log4。 我应该直接为您好世界配置log4j吗?
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].
4个解决方案
74 votes
如果要使用slf4j simple,则需要在类路径中使用以下INFO文件:
slf4j-api-1.6.1.jar
slf4j-simple-1.6.1.jar
如果要使用slf4j simple和INFO,则需要在类路径上使用以下log4j文件:
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar
log4j-1.2.16.jar
不多不少。 使用slf4j simple,您将以INFO或更高级别将基本日志记录到控制台。 使用log4j,必须对其进行相应的配置。
darioo answered 2020-02-10T13:52:27Z
44 votes
以下是一个示例。 您可以查看详细信息[http://jkssweetlife.com/configure-slf4j-working-various-logging-frameworks/],并在此处下载完整代码。
如果您使用的是maven,则将以下依赖项添加到pom中,否则,只需下载jar文件并将其放在类路径中
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);
}
}
配置log4j.properties
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);
}
}
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);
}
}
ylu answered 2020-02-10T13:53:14Z
3 votes
you need to add 3 dependency ( API+ API implementation + log4j dependency)
Add also this
org.apache.logging.log4j
log4j-core
2.5
# 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
Shantonu answered 2020-02-10T13:53:30Z
0 votes
我有同样的问题。 直接使用log4j api时,我从代码中的log4j.properties文件中调用了自己的自定义记录器。 如果使用的是slf4j api调用,则可能使用的是默认的根记录器,因此必须在log4j.properties中将其配置为与附加程序关联:
# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1
# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
Lund Wolfe answered 2020-02-10T13:53:51Z