相关疑难解决方法(0)

如何在记录器中对消息执行JUnit断言

我有一些测试代码,它调用Java记录器来报告其状态.在JUnit测试代码中,我想验证在此记录器中是否输入了正确的日志.以下内容:

methodUnderTest(bool x){
    if(x)
        logger.info("x happened")
}

@Test tester(){
    // perhaps setup a logger first.
    methodUnderTest(true);
    assertXXXXXX(loggedLevel(),Level.INFO);
}
Run Code Online (Sandbox Code Playgroud)

我想这可以通过特殊改编的记录器(或处理程序或格式化程序)来完成,但我更愿意重用已经存在的解决方案.(而且,说实话,我不清楚如何从记录器获取logRecord,但假设这是可能的.)

java logging junit assert

177
推荐指数
14
解决办法
15万
查看次数

如何在log4j中创建自己的Appender?

我是log4j的新手.任何人都可以解释如何创建自己的Appender?即如何实现类和接口以及如何覆盖它?

java log4j appender

53
推荐指数
3
解决办法
6万
查看次数

如何使用Log4j2将日志输出到JTextArea

我一直试图将日志输出到JTextArea几天,但仍然没有运气.基本上我尝试过的是在现有的appender(如consoleAppender)之后创建自己的自定义appender,并尝试在log4j2.xml中配置它.我觉得我正朝着正确的方向前进,但不知怎的,我无法让它发挥作用.我在log4j2用户邮件列表中询问过,似乎没有人关心帮助我.希望我能在这里得到我的帮助.如果您知道如何实现它,请给我步骤甚至代码片段.

感谢您的高级帮助.

好吧,既然有人拒绝投票我的问题,因为它没有显示任何努力,那么我最好展示一些.我没有表现出我所做的任何事情,因为我不太确定我所做的是正确的方式,人们可能有自己的方法.

我面临的问题是,

  • 我找不到将JTextArea对象传递给TextAreaAppender的方法
  • 当我尝试运行测试类时,总是收到错误说TextAreaAppender CLASS_NOT_FOUND,但我已经尝试了所有可能的方法,我可以在log4j2.xml中指定class属性

代码如下,

TextAreaAppender

public class TextAreaAppender extends AbstractOutputStreamAppender<OutputStreamManager>{
    private static TextAreaManagerFactory factory = new TextAreaManagerFactory();

    public enum Target {
        TEXTAREA
    }

    protected TextAreaAppender(String name, Layout<? extends Serializable> layout, Filter filter,
            OutputStreamManager manager, boolean ignoreExceptions) {
        super(name, layout, filter, ignoreExceptions, true, manager);
        // TODO Auto-generated constructor stub
    }

    @PluginFactory
    public static TextAreaAppender createAppender(
            @PluginElement("Layout") Layout<? extends Serializable> layout,
            @PluginElement("Filters") final Filter filter,
            @PluginAttribute("target") final String t,
            @PluginAttribute("name") final String name,
            @PluginAttribute("follow") final String follow,
            @PluginAttribute("ignoreExceptions") …
Run Code Online (Sandbox Code Playgroud)

configuration log4j jtextarea appender log4j2

7
推荐指数
2
解决办法
3041
查看次数

如何在TestNG报告中包含Log4j2消息

我想在TestNG报告中提供所有测试用例的Log4j2日志信息.

TestNG使用一个名为Reporter.java的特殊记录器类来跟踪日志输出并将其保存在结果XML中.

在log4j中,可以简单地创建一个路由到Reporter并注册它的appender实现.

使用Log4j2中的新Logger API,很难找到有关如何实现此目的的信息.我有一些信息可以使用Log4j完成,但不能使用Log4j2.

java testng automated-tests log4j2

6
推荐指数
1
解决办法
973
查看次数

如何使用属性文件在log4j2中创建多个日志文件?

我正在使用 .property 文件在特定路径中创建日志文件,但我正在使用它创建单个文件。以下是我的属性文件代码:

    status = error
dest = err
name = PropertiesConfig

property.filepath= /ap
property.filename =${filepath}/ai.log
property.filename1 =${filepath}/file1.log
property.filename2 =${filepath}/file2.log

filter.threshold.type = ThresholdFilter
filter.threshold.level = debug

appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

appender.file.type = RollingFile
appender.file.name = RootFile1
appender.file.fileName = ${filename}
appender.file.filePattern = ${filepath}/%d{yyyyMMdd}/cpl.mw.%d{yyyyMMdd}.%i.log.gz
appender.file.layout.type = PatternLayout
#appender.file.layout.pattern = %d %p %C{1.} [%t] %m%n
appender.file.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.file.policies.type = Policies
appender.file.policies.time.type = TimeBasedTriggeringPolicy
appender.file.policies.time.interval …
Run Code Online (Sandbox Code Playgroud)

java log4j2

5
推荐指数
1
解决办法
2万
查看次数

log4j2未检测到自定义appender插件

我正在尝试为log4j 2.0创建一个自定义appender,但是在让我的log4j配置识别appender时遇到了问题.我知道log4j 2.0不支持配置属性中的包.所以我按照这里的建议尝试用普通的javac运行代码,但即使这样它也会出现这个错误:2015-03-11 18:47:35,281 ERROR Error processing element Test: CLASS_NOT_FOUND 2015-03-11 18:47:35,307 ERROR Unable to locate appender test1 for logger

这是我的自定义appender:

@Plugin(name = "Test", category = "Core", elementType = "appender", printObject = true)
public class TestAppender extends AbstractAppender{
protected TestAppender(String name, Filter filter,
        Layout<? extends Serializable> layout, boolean ignoreExceptions) {
    super(name, filter, layout, ignoreExceptions);
    // TODO Auto-generated constructor stub
}

@PluginFactory
public static TestAppender createAppender(@PluginAttribute("name") String name,
        @PluginAttribute("ignoreExceptions") boolean ignoreExceptions,
        @PluginElement("Layout") Layout<? extends Serializable> layout,
        @PluginElement("Filters") Filter …
Run Code Online (Sandbox Code Playgroud)

java appender log4j2

2
推荐指数
1
解决办法
7111
查看次数