Java 为JUnit配置log4j

Java 为JUnit配置log4j,java,junit,log4j,Java,Junit,Log4j,我想为JUnit测试用例配置log4j。我的测试分布在多个文件中,但具有相同的log4j设置。我在哪里可以做 我不想使用log4j属性文件。我的解决方案,它似乎有效 编写一个扩展Log4j系统的自定义类 公共类myLogger扩展了日志记录器 { …东西 } 对于“东西”,您需要实现以下内容(或者至少我做到了) 某种构造器 公共myLogger(字符串名称) 。。在每个类中,您希望/需要包含myLogger的静态成员 private static final myLogger errorLog

我想为JUnit测试用例配置log4j。我的测试分布在多个文件中,但具有相同的log4j设置。我在哪里可以做


我不想使用log4j属性文件。

我的解决方案,它似乎有效

编写一个扩展Log4j系统的自定义类

公共类myLogger扩展了日志记录器 { …东西

}

对于“东西”,您需要实现以下内容(或者至少我做到了)

某种构造器 公共myLogger(字符串名称)

。。在每个类中,您希望/需要包含myLogger的静态成员

private static final myLogger errorLog =  new myLogger("nameOfClassOrWhateverNameYouFancy")
如果在所有类中使用相同的名称,它们将登录到同一个日志实例(您可能已经知道)

回到myLogger类,您需要实现一种设置日志级别的方法(我就是这样做的…)

现在,如果您想为“奇怪的东西”创建一些特定的登录实例,您有2个选项,正如我前面所说的,您可以为命名的记录器创建一个静态成员,或者您可以向myLogger类添加静态成员(我就是这样做的)

然后,对于这些静态成员中的每一个,您可能需要一个唯一的

set[nameOfLogger](int i, string s)
其结构基本上与上述方法相同

现在如果你想从你调用的类中调用它

myLogger.set[nameOfLogger](1, "s")
你不在了

然后,您需要将有关日志级别(调试、警告等)以及消息发送到何处(控制台、文件等)的信息添加到log4j.properties(如我所用)或log4j.xml中

请记住,要确保有关设置静态命名记录器的行发生在rootLogger实例之后,这让我很长一段时间都感到困惑

我已经包括了我认为是相当广泛的指导,因为我为此奋斗了相当长的一段时间,直到今天才最终成功

我现在是一只快乐的兔子。。。。直到我打碎了别的东西;)

大卫

抱歉,刚才注意到您不想使用log4j.properties文件。有什么特别的原因吗

如果不只是

import org.apache.log4j.Logger;
创建一个日志实例

private Logger jUnitTestingLogger;
然后使用各种方法调用设置输出(我特别想到addappender),我从来没有这样做过,所以不知道怎么做


有趣的是,有一个assertLog(布尔断言,字符串消息)方法可能对您的实例很有用。

log4j属性文件是什么意思。。。是log4j.xml吗?是的。我想通过代码配置log4j。为什么不使用log4j.xml。。。。有什么具体要求吗?为什么没有?为什么还要登录单元测试?您想在测试中设置日志级别,或者您想要什么?
private Logger jUnitTestingLogger;