Java log4j找不到appender

Java log4j找不到appender,java,logging,log4j,Java,Logging,Log4j,我总是试图使用正式的结构化日志api,这是一场噩梦,这解释了为什么这么多人只是打印到控制台 我试图在我的项目中使用log4j 要实例化记录器,我需要执行以下操作: private static final Logger log = LoggerFactory.getLogger(Instagram.class.getPackage().getName()); 当我想注册一个事件时,我会: log.info("some information"); 我在src文件夹中有一个log4j.p

我总是试图使用正式的结构化日志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个appender,为什么它找不到一个appender呢首先,我可以看到您正在将SLF4J与log4j 1.2.x一起使用,因为您正在用LoggerFactory.getLogger实例化记录器。如果只想使用log4j 1.2.x,则应使用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

您的问题可能与log4j.properties文件的位置有关。

LoggerFactory.getLogger和Logger.getLogger的区别是什么查看导入:LoggerFactory在org.slf4j包中,Logger.getLogger在org.apache.log4j中。是不同的框架,你可以一起使用,但是如果你是新的log4j,我认为你应该开始只使用log4j.slf4j让我插入实现的痛苦。。。我在使用ApacheLog4J时遇到了一个噩梦,当时我需要将代码放入Android中,我认为使用slf4j没有任何问题。。。您的问题很可能是因为log4j.properties不在类路径下,或者有人重写了log4j的默认配置过程。看看这是一个新项目还是一个现有项目?如果这是一个新项目,我建议使用log4j2,因为它比log4j1.x有很多增强,包括更好的文档。