0

我正在做一些基于 thucydides-jbehave-archetype 的 java maven 项目。

通过maven添加smslib依赖:

<dependency>
   <groupId>org.smslib</groupId>
   <artifactId>smslib</artifactId>   
   <version>dev-SNAPSHOT</version>
</dependency>
...
<repositories>
   <repository>
      <id>smslib-snapshots</id>
      <name>SMSLib Repository</name>
      <url>http://smslib.org/maven2/snapshots/</url>
   </repository>
</repositories>

在纯网络测试中,我计划进行一些短信发送/接收;sms 代码放在 src/main/java/projectname/gsm 包中(例如页面对象放在 src/main/java/projectname/pages 中,步骤放在 src/test/java/projectname.jbehave/ 中)。我想为 smslib 启用调试消息,但不是为 thucydides 启用调试消息。但是,log4j.properties 没有用于 smslib 的位置,并且有一个位置导致出现 thucydides 的调试消息。

4

2 回答 2

1

你的问题可以改写为:

如何使用 log4j 的属性文件设置两个不同的日志级别 - 为不同包中的两个类使用两个单独的文件?

如果是这样,rimero 的回答是一个开始。但是,您需要将每个文件(定义不同的日志级别)放在反映包名称(例如 src/main/projectname/page)的目录结构中,而不是删除 src/main/sources 中的属性文件。然后,您可以使用单独加载每个属性文件

PropertyConfigurator.configure(URL configURL)

有几种方法可以获取属性文件的 url,例如:

如何使用属性文件配置 log4j

这是一个完整的例子:


public class TestPropertiesFile {

private static final String PREFIX = "projectname/pages";
private static final org.apache.log4j.Logger LOGGER = org.apache.log4j.Logger
        .getLogger("projectname.page.SomeClass");
private static String PROPERTIES_PATH;

static {
    PROPERTIES_PATH = Thread.currentThread().getContextClassLoader()
            .getResource(PREFIX + "/log4j.properties").getPath();
    org.apache.log4j.PropertyConfigurator.configure(PROPERTIES_PATH);

}

public static void test() {
    LOGGER.info("Logging from: " + PROPERTIES_PATH);
}

}

于 2013-06-23T23:00:25.360 回答
1

您可以将log4j.properties文件转储到src/main/resources中。

要控制日志级别,只需创建适当的 Log4j 配置文件。

...
# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN
...

有关更多详细信息,请查看Log4j 手册

于 2013-06-23T21:28:34.590 回答