为独立应用程序初始化log4j

时间:2012-05-10 20:38:08

标签: java logging log4j

我是log4j的新手。这就是我所拥有的。我在STAND ALONE 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找不到logger(com.xxx.myApp.MainProgram.MyFileName)的appender。 log4j:WARN请正确初始化log4j系统。 log4j:WARN有关详细信息,请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig

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

3 个答案:

答案 0 :(得分:6)

可能需要以下一行:

# 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

答案 1 :(得分:4)

如果您打算在应用程序的类路径中使用名为log4j.properties的文件,则无需拨打PropertyConfigurationDOMConfigurator - log4j will do this automatically首次初始化时(首次加载记录器时)。

错误消息似乎表明您的配置未加载。

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

答案 2 :(得分:0)

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