7

我是 log4j 的新手。这就是我所拥有的。我在一个独立的 JAVA 应用程序中有大约 20 个不同包中的文件。我正在尝试使用和编写日志文件。

以下是我的类路径中的log4j.properties 文件:

log4j.appender.R = org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File = /ParentFolder/ChildFolder/application.log
log4j.appender.R.Append = true
log4j.appender.R.DatePattern = '.'yyy-MM-dd
log4j.appender.R.layout = org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n

以下是在我的主要方法中初始化日志记录的代码

final String LOG_FILE = "C:/eclipse_workspace/lib/log4j.properties"; 
      Properties logProp = new Properties();      
      try     
      {      
       logProp.load(new FileInputStream (LOG_FILE));  
            PropertyConfigurator.configure(logProperties);      
            logger.info("Logging enabled");    
      }     
      catch(IOException e)                
      {       
     System.out.println("Logging not enabled");       
                 }  

在应用程序的每个 java 类中,我都有以下代码

import org.apache.log4j.*;

private static final Logger logger = Logger.getLogger(TheActualClassName.class); 

但是当我运行应用程序时收到以下警告消息

log4j:WARN 找不到记录器 (com.xxx.myApp.MainProgram.MyFileName) 的附加程序。log4j:WARN 请正确初始化 log4j 系统。log4j:WARN 有关详细信息,请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig

我究竟做错了什么??未生成日志文件“application.log”

4

3 回答 3

7

可能需要以下行:

# Set root logger level to INFO and appender to R.
log4j.rootLogger=INFO, R

根记录器始终可用并且没有名称。

从 1.2.7 版本开始,log4j(带有LogManager类)首先在类路径中查找log4j.xml。如果log4j.xml不存在,则 log4j(带有LogManager类)log4j.properties在类路径中查找。

于 2012-05-10T20:43:17.670 回答
4

如果您要使用名为 的文件log4j.properties并且它位于应用程序的类路径中,则甚至无需调用PropertyConfigurationDOMConfigurator- log4j 将在首次初始化时自动执行此操作(当您首次加载记录器时)。

错误消息似乎表明您的配置没有被加载。

将 VM 参数添加-Dlog4j.debug到您的应用程序,让 log4j 在启动时吐出一大堆信息,其中包括它尝试加载的文件以及它在配置中找到的值。

于 2012-05-10T20:43:10.407 回答
0

Raghu,如果您使用独立配置来配置 log4j 属性,那么可以使用 BasicConfigurator.configure() 方法来解决您的附加程序问题。

于 2015-01-09T14:46:16.773 回答