当通过maven依赖项添加log4j.properties文件时,我应该在哪里放置log4j.properties文件以在smslib中启用调试日志记录?

当通过maven依赖项添加log4j.properties文件时,我应该在哪里放置log4j.properties文件以在smslib中启用调试日志记录?,maven,log4j,jbehave,smslib,thucydides,Maven,Log4j,Jbehave,Smslib,Thucydides,我正在做一些基于修昔底德jbehave原型的java maven项目 Smslib依赖项是通过maven添加的: <dependency> <groupId>org.smslib</groupId> <artifactId>smslib</artifactId> <version>dev-SNAPSHOT</version> </dependency> ... <repo

我正在做一些基于修昔底德jbehave原型的java maven项目

Smslib依赖项是通过maven添加的:

<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>

org.smslib
smslib
开发人员快照
...
smslib快照
SMSLib存储库
http://smslib.org/maven2/snapshots/
在纯网络测试中,我计划做一些短信发送/接收;sms代码放在src/main/java/projectname/gsm包中(例如,页面对象放在src/main/java/projectname/pages中,步骤放在src/test/java/projectname.jbehave/)。我想为smslib启用调试消息,但不为修昔底德启用。但是,没有log4j.properties用于smslib的位置,只有一个位置导致出现thucydides的调试消息

您可以在src/main/resources中转储log4j.properties文件

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

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

有关更多详细信息,请查看。

您的问题是否可以改为:

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

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

PropertyConfigurator.configure(URL configURL)
有几种方法可以获取属性文件的url,例如,请参见:

以下是一个完整的示例:

}

谢谢您的详细回答!我的错,但我想问的是“smslib maven依赖项是否编写调试日志?”。我面临的问题是,当我将启用调试的log4j.properties文件放入main/resources或test/resources时,在这两种情况下,我只从修昔底德那里获得调试消息;从Smslib看不到。在我将在同一个输出中获得smslib和thucydides调试消息之后,您的回答将对我有所帮助。我想我应该首先向Smslib用户组提出我的问题!另外,我使用了两个作为maven依赖项添加的库,其中封装了日志记录。我根本不打算实现自己的日志记录。有没有一种方法可以修改他们的日志记录而不需要编码,而只需要maven配置?在我将org.slf4j-slf4j-log4j12 1.5.2添加到pom.xml之后,一些日志插件或其他东西为我工作

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);
}