捕获测试中的日志

时间:2018-11-09 00:40:05

标签: java spring

我正在尝试捕获测试中的bean分配日志-我已经测试了代码,并将成功捕获 my 类中的日志-但是当我尝试这样做时在spring类上,它似乎不起作用-这是我用来尝试捕获的代码:

{{1}}

现在,如果我追溯并查看春天使用的记录器-它看起来像完全不同的记录器样式-(它钩接到了日志管理器上,而不是logger上下文中)-然后进入该目录,看起来好像是不同的背景?

您知道我在做什么错吗,以及如何在单元测试中 捕获Spring bean创建日志?

3 个答案:

答案 0 :(得分:0)

Spring Boot默认情况下使用Logback记录器 它使用LogbackLoggingSystem实现, 从AbstractLoggingSystem扩展 Spring Boot LoggingSystem在上下文初始化之前运行 要覆盖默认属性,您可以定义logback.xml或logback-spring.xml 或者,您可以使用application.yml或属性文件来定义日志配置:

logging.level。*:用作包名称的前缀以设置日志级别。 logging.file:配置日志文件名以将消息记录在文件中。我们还可以使用绝对路径配置文件名。 logging.path:它仅配置日志文件的路径。 Spring Boot创建一个名为spring.log的日志文件 logging.pattern.console:它在控制台中定义日志记录模式。 logging.pattern.file:它定义文件中的日志记录模式。 logging.pattern.level:它定义了呈现日志级别的格式。默认值为%5p。

如文档所述: 您可以通过使用org.springframework.boot.logging.LoggingSystem系统属性来强制Spring Boot使用特定的日志记录系统。该值应该是LoggingSystem实现的完全限定的类名。您也可以使用无值完全禁用Spring Boot的日志记录配置。

答案 1 :(得分:0)

如果在测试的类中使用静态Logger,则可以使用Powermock模拟记录器并声明输出,如in this question所示。 我们在Spring-Tests中使用它,格式和样式相同。

答案 2 :(得分:0)

对任何感兴趣的人-终于对我有用:

Logger logger = Logger.getLogger(
        "org.springframework.beans.factory.support.DefaultListableBeanFactory");
logger.addHandler( this );
logger.setLevel( java.util.logging.Level.FINE);
_logger = logger;

现在我可以捕获,跟踪和计时所有bean分配。