当通过maven依赖项添加log4j.properties文件时,我应该在哪里放置log4j.properties文件以在smslib中启用调试日志记录?
我正在做一些基于修昔底德jbehave原型的java maven项目 Smslib依赖项是通过maven添加的:当通过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
<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);
}