相关疑难解决方法(0)

如何在log4j2中创建自定义Appender?

正如在这个链接中所讨论的:如何在log4j中创建自己的Appender?

为了在log4j 1.x中创建自定义appender,我们必须扩展AppenderSkeleton类并实现其append方法.

类似地我们如何在log4j2中创建自定义appender,因为我们没有扩展AppenderSkelton类,所有其他appender扩展AppenderBase类.

java logging log4j log4j2

48
推荐指数
2
解决办法
4万
查看次数

自定义日志记录以在运行时收集消息

有没有办法在运行时创建log4j Logger,将日志消息收集到缓冲区?

我目前有一个记录许多事件的类.对于需要监视记录的事件的远程应用,我想只是交换在记录到一个缓冲区记录,然后检索该缓冲区,而不是重构类.例如给出类似的东西:

Class Foo{
   Logger log = ....;

   public void doSomething(){ 
      log.debug(...
      .. actual code
      log.debug(...
   }
}
Run Code Online (Sandbox Code Playgroud)

//我想从一些外部代码做什么:

String showFooLog(){
   Foo f = new Foo();
   f.log=new Logger(... 
   f.doSomething();
   return f.log.contents();
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

编辑:找到一个更短的解决方案,从Jare​​d的帖子中指出(虽然它仍然不是线程安全的).谢谢您的帮助.

 Logger l = Logger.getLogger( ...  );
 StringWriter writer = new StringWriter();
 WriterAppender appender = new WriterAppender( new HTMLLayout(), writer );
 l.addAppender( appender );
    ... run code here
  writer.flush();
 l.removeAppender( appender );
 return writer.toString()
Run Code Online (Sandbox Code Playgroud)

java log4j

8
推荐指数
1
解决办法
2910
查看次数

如果测试失败,则用于调试输出的 Log4j 附加程序

我想设置我的测试日志,以便主要抑制日志输出 - 除非测试失败。然后我想要调试输出。

我知道只修改测试类路径中的 log4j.properties 的手动解决方案,或者只是让调试日志记录始终对测试处于活动状态 - 但我不想用不需要的绿色测试输出向控制台发送垃圾邮件。

对于失败的测试,我希望自动构建为我提供调试输出,以防出现一些奇怪的环境问题。

我一直在想应该有一个 appender 可以与 junit 规则结合使用,该规则在测试结果已知之前抑制输出,然后只有在测试失败时才推迟记录到另一个 appender。

我可能自己做这个,但我想知道是否有人以前尝试过这个,或者是否有更好的解决方案。

java junit log4j junit-rule

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

标签 统计

java ×3

log4j ×3

junit ×1

junit-rule ×1

log4j2 ×1

logging ×1