Java应用程序:让Log4j在Eclipse环境中工作



我已经尽了最大努力将Eclipse和Java应用程序设置为使用log4j.properties文件。然而,它似乎没有使用属性文件,我不知道为什么。

库:slf4j-api-1.6.1,slf4j-jdk14-1.6.1

在应用程序中,日志记录工作正常。我能够将信息、警告和错误打印到Eclipse控制台中。

我希望能够做的是更改日志级别以调试并将所有日志消息打印到控制台和日志文件中。

我创建了一个log4j.properties文件,如下所示:

log4j.rootLogger=DEBUG,console,file
log4j.rootCategory=DEBUG, R, O
# Stdout
log4j.appender.O=org.apache.log4j.ConsoleAppender
# File
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=log4j.log
# Control the maximum log file size
log4j.appender.R.MaxFileSize=100KB
# Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=5
log4j.appender.file.File=checkLog.log
log4j.appender.file.threshold=DEBUG
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.O.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n
log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n

我的目录结构如下:

My Project
--src/
----MYProject/
------*.java
--bin/
----MYProject/
------*.class
--log4j/
----log4j.properties

在Eclipse中,我这样做:

运行配置->Classpath(选项卡)->,右键单击用户条目->将"log4j"添加为新文件夹并保存。

然后在我的代码中,我这样调用记录器(示例代码演示我的方法,这样它可能会有语法错误):

package MYProject;
import org.slf4j.LoggerFactory;
public class MyClass{
  final org.slf4j.Logger test_logger = LoggerFactory.getLogger(MyClass.class);
  public MyClass(){}
  public someMethod(){
    test_logger.debug("Some Debug");
    test_logger.info("Some Info");
    test_logger.warn("Some Warning");
    test_logger.error("An Error");
  }
}

然后我调用someMethod,它将INFOWARNERROR打印到Eclipse控制台。它不会打印DEBUG,也不会打印到文件中。

如果能就我可能做错的地方提出建议,我将不胜感激。

log4j.properties之前的类路径中可能还有另一个log4j.propertieslog4j.xml文件。打开项目的运行配置,并将-Dlog4j.debug=true添加为项目的VM参数。这将指示log4j在控制台上打印许多附加信息,包括它正在使用的配置文件。

如果您使用的是日志记录立面slf4j,那么您需要通过包含该后端的相应jar文件来精确指定一个日志记录后端。在您的案例中,您已经在类路径上安装了slf4j-jdk14-x.x.x.jar,它只是一个通用的记录器后端。

为了使用log4j后端,您需要删除slf4j-jdk14-x.x.x.jar并将其替换为slf4j-log4j12-x.x.x.jar。如果您不删除它,slf4j必须只选择一个后端jar,而且可能不是您想要的那个。

当然,您还需要类路径上的实际log4j-x.x.x.jar文件。

一旦这些jar正确就位,那么-Dlog4j.debug的VM参数将实际工作,并且在调试日志配置的来源时非常有用。

您需要告诉您的代码使用属性文件。在完成任何日志记录之前,请放置

PropertyConfigurator.configure("log4j/log4j.properties");

您的目标目录中可能有一个旧版本。请清理项目,然后重试。

除此之外,如果您没有通过eclipse添加log4j.properties,则应确保刷新eclipse项目

在路径项目属性/库选项卡中删除项目的jre(jre系统库),然后重新设置jre!

最新更新