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

标签 java logging jersey log4j tomcat7

我对 log4j 有疑问。我正在尝试使用它在我的 Rest Web 服务中记录一些操作的文件。我正在使用 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

最佳答案

Tomcat is launching some error when I try to run the project:

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的app里面

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

关于java - 在我的 Maven 项目中读取 log4j.properties 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28200666/

相关文章:

java - 使用带有泛型的 Jackson ObjectMapper 到 POJO 而不是 LinkedHashMap

spring - 如何仅使用注释使用 Spring 配置 Jersey

java - 有谁知道像 Apache CXF 这样的 Jersey 客户端代理实现为 REST 提供

java - 如何解决异常 org.codehaus.jackson.map.exc.UnrecognizedPropertyException

Java SSHJ - 添加到 validator 中的known_hosts文件

java - Activiti 的日志配置

java - Java 有什么方法可以获取当前文件名和当前行号?

php - 记录事件 : How to record time using a PHP application?

java - Eclipse gluon 新项目没有完成

java - Tomcat context.xml 好像坏了,如何正确设置sessionCookiePath?