【问题标题】:get the message myLogger.log(e) in a String variable在字符串变量中获取消息 myLogger.log(e)
【发布时间】:2012-05-02 17:07:25
【问题描述】:

我想在字符串变量中获取 myLogger.log(e) 方法的输出,以便能够使用 Junit 进行测试。

myLogger.log(e);
String s= ????
assertEqual(expected,s);

【问题讨论】:

  • 请提供更多关于 myLogger 类的信息
  • 我在使用 Log4j,它收到一个 Exception 异常作为参数
  • 为什么要测试日志字符串?这对我来说似乎很奇怪,特别是因为我通常可以在部署期间轻松更改日志格式。在单元测试中,您通常会测试逻辑而不是记录。
  • 条件有点不切实际。您能解释一下您的业务需求吗?
  • 我用自定义消息抛出了一个定制的异常,我想测试该消息的格式是否很好

标签: java log4j


【解决方案1】:

您可以编写一个写入 StringWriter 的 log4j appender。看看这个帖子:

How to read log4j output to a web page?

【讨论】:

    【解决方案2】:

    您可以向 Logger 添加额外的 Appender。使用 WriterAppender 写入 StringWriter 然后将 TextArea 的内容更改为 StringWriter#toString() 的值

    public static void main(String[] args) {
        Logger logger = Logger.getLogger("logger");
        Layout layout = new PatternLayout();
        StringWriter stringWriter = new StringWriter();
        WriterAppender writerAppender = new WriterAppender(layout, stringWriter);
        logger.addAppender(writerAppender);
    
        logger.error("test");
        String string = stringWriter.toString();
        System.out.println(string);
      }
    

    here所述。

    【讨论】:

      猜你喜欢
      • 2011-06-15
      • 2018-10-15
      • 2014-07-17
      • 2011-07-25
      • 2022-10-21
      • 2019-05-11
      • 2016-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多