【发布时间】:2019-08-07 12:02:13
【问题描述】:
我有一个提供从 UI 运行单元测试的应用程序。我使用 JUnit API(不是来自 maven)运行测试。我也用黄瓜。当用户在我的应用程序黄瓜中运行测试时,创建新的应用程序上下文(用于测试)。此外,在业务逻辑实现方面,我应该将来自测试的日志写入单独的文件中,并在测试完成时将其发送到 UI。所以每次运行测试我的应用程序都应该创建新的日志文件,完成后发送给他并删除。此外,我为我的应用程序使用 SLF4J-Log4j2 绑定。当我尝试使用 SLF4J-Log4j2 绑定为所有应用程序编写日志时,我最终无法删除日志文件,因为它们被记录器使用。我可以仅为测试阶段创建不同的记录器,还是配置现有的记录器以在测试完成后发布日志文件? 附言我试图在文件删除之前删除当前的附加程序,但它不起作用
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
<Properties>
<Property name="filename">${sys:catalina.home}/odysseyLogs</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{HH:mm:ss} %-5level %logger{1} - %msg%n" />
</Console>
<File name="File-other" fileName="${filename}/other.txt"
append="false">
<PatternLayout
pattern="%d{yyy-MM-dd HH:mm:ss} [%t] %-5level %logger{5} - %msg%n" />
<NoMarkerFilter onMatch="ACCEPT" onMismatch="DENY" />
</File>
<File name="File-env14" fileName="${filename}/bin/target/env14.txt"
append="false">
<PatternLayout
pattern="%d{yyy-MM-dd HH:mm:ss} | %-5level | %c{1.} - %msg%n" />
<MarkerFilter marker="env_14" onMatch="ACCEPT" onMismatch="DENY"/>
</File>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console" />
<AppenderRef ref="File-other" level="debug" />
<AppenderRef ref="File-env14" level="info" />
</Root>
</Loggers>
</Configuration>
【问题讨论】:
标签: logging junit cucumber log4j2 slf4j