Java 为独立应用程序初始化log4j

Java 为独立应用程序初始化log4j,java,logging,log4j,Java,Logging,Log4j,我是log4j的新手。这就是我所拥有的。在一个独立的JAVA应用程序中,我有大约20个不同包中的文件。 我正在尝试使用和写入日志文件 下面是我的log4j.properties文件,它位于我的类路径中: log4j.appender.R = org.apache.log4j.DailyRollingFileAppender log4j.appender.R.File = /ParentFolder/ChildFolder/application.log log4j.appender.R.Appe

我是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
以下是在我的main方法中初始化日志记录的代码

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:警告请正确初始化log4j系统。 log4j:有关更多信息,请参阅警告


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

如果您要使用名为
log4j.properties
的文件,并且它位于应用程序的类路径上,则在首次初始化时(首次加载记录器时),甚至不需要调用
PropertyConfiguration
DOMConfigurator

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


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

可能需要以下行:

# 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


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

此外,您还可以使用Logger.getRootLogger(),而无需将类作为参数编写。您可以阅读链接文档,它会告诉您所需的一切。使用xmlconfigurator会有任何改进吗?@Morpheus,不会,因为问题是一样的-配置程序无法读取传递给它的配置,可能是因为路径问题。自版本1.2.7以来,log4j在类路径中查找
log4j.properties
log4j.xml
。现在没有错误,我在指定的文件夹中也有一个日志文件。谢谢你,保罗