在我的Maven项目中读取log4j.properties时出错

时间:2015-01-28 19:22:18

标签: java logging jersey log4j tomcat7

我遇到了log4j的问题。我正在尝试使用它来在我的Rest Web Service中记录文件中的一些操作。我正在使用jersey框架在java中开发Web服务。我正在使用Eclipse和Maven项目。

enter image description here

我创建了我的MWlogs.properties并放在src下。该文件的内容是:

# LOG4J daily rolling log files configuration
log4j.rootLogger=DEBUG, RollingAppender

# RollingAppender configuration
log4j.appender.RollingAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingAppender.File=./logs/mobiwallet.log
log4j.appender.RollingAppender.DatePattern='.'yyyy-MM-dd
log4j.appender.RollingAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingAppender.layout.ConversionPattern=[%p] %d %c %M - %m%n

然后在服务包下我试图测试log4j但是它运行不正常。我在服务包下的这个课程中有:

...
import org.apache.log4j.Logger; 
import org.apache.log4j.PropertyConfigurator;
...
@Path("/UserActions")
public class UserActions {
   static final Logger logger = Logger.getLogger(UserActions.class);
   ...
   public MW_USER_DATA_QUERY_RESPONSE reqMWUser(InputStream userRequest){
      PropertyConfigurator.configure("MWlogs.properties");
      ...
      logger.info("Consulta de MW USER!!!!!");
      return reply;
   }
}

当我尝试运行项目时,Tomcat正在启动一些错误:

log4j:ERROR Could not read configuration file [MWlogs.properties].

当执行logger.info时,Tomcat还会显示以下错误消息:

log4j:WARN No appenders could be found for logger (service.UserActions).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info

1 个答案:

答案 0 :(得分:1)

  

当我尝试运行项目时,Tomcat正在启动一些错误:

     

log4j:ERROR Could not read configuration file [MWlogs.properties].

似乎堆栈跟踪没有被记录,或者你只是没有向我们展示它。但很可能还有一个FileNotFoundException与上述消息一起被抛出。

PropertyConfigurator.configure(String)将从工作目录开始在文件系统上查找文件。

使用属性文件的位置,它将是一个类路径资源,应该通过一个URL读取,PropertiesConfigurator有一个重载的confiure(URL)方法。所以将呼叫更改为

PropertyConfigurator.configure(getClass().getResource("/MWlogs.properties"));

假设您的MWlogs.properties构建到类路径的根目录(它应该),上面应该可行。我测试了它。如果由于某种原因它仍然不起作用,您可以尝试将文件放在src/main/resources中,或者您可以尝试将其显式地放在tomcat中的应用程序中

<tomcat>/webapps/exploded-war/WEB-INF/classes/MWlogs.properties