log4j找不到appender

时间:2018-05-19 18:14:54

标签: java logging log4j

总是我尝试使用正式的结构化日志api是一场噩梦(这解释了为什么这么多人只是打印到控制台)

我正在尝试在我的项目中使用log4j

实例化我做的记录器:

   private static final Logger log = LoggerFactory.getLogger(Instagram.class.getPackage().getName());

当我想注册我做的事件时:

log.info("some information");

我在src文件夹中有一个log4j.properties文件,如:

log4j.logger.com.tomatechines.instagramapi.api = INFO, CONSOLE, FILE, ERROR

log4j.rootLogger = INFO, FILE, ERROR

log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.DatePattern = yyyy-MM-dd'.log'
log4j.appender.FILE.File = logs/log-
log4j.appender.FILE.layout = org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d{HH:mm:ss.SSS} %-5p %C{1}:%L - %m%n

log4j.appender.ERROR=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ERROR.DatePattern = yyyy-MM-dd'.log'
log4j.appender.ERROR.File = logs/errorlog-
log4j.appender.ERROR.layout = org.apache.log4j.PatternLayout
log4j.appender.ERROR.layout.conversionPattern=%d{HH:mm:ss.SSS} %-5p %C{1}:%L - %m%n
log4j.appender.ERROR.Threshold=WARN

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.conversionPattern=%d{HH:mm:ss.SSS} %-5p %C{1}:%L - %m%n

但是当代码运行时,打印到控制台或文件的唯一内容是:

log4j:WARN No appenders could be found for logger (com.tomatechines.instagramapi.api).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

为什么它没有找到我的文件,我设置3个appenders,为什么它只能找到一个

2 个答案:

答案 0 :(得分:1)

首先,我可以看到您正在使用SLF4J和log4j 1.2.x,因为您使用let user: User = { firstName: 'Henri', lastName: 'Bergson' }; this.localStorage.setItem('user', user).subscribe(() => {}); 实例化记录器。如果您只想使用log4j 1.2.x,您应该使用LoggerFactory.getLogger获取记录器。确保已从Logger.getLogger包导入类。

您还必须确保已将org.apache.log4j文件放在类路径下。在我看来,你应该首先尝试一个非常简单的配置,以避免配置问题。类似的东西:

log4j.properties

可能您的问题与# Root logger option log4j.rootLogger=INFO, stdout # Direct log messages to 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 文件的位置有关。

答案 1 :(得分:0)

您的配置文件很好;问题很简单,这个配置文件在运行时没有包含在你的类路径中。

您应将ss文件放在log4j.properties文件夹下。

(如果您使用标准maven或gradle设置;否则取决于您使用的是哪个IDE)