【问题标题】:Can I create a logger with lifetime during tests?我可以在测试期间创建一个有生命周期的记录器吗?
【发布时间】: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


    【解决方案1】:

    对于您的用例,我建议创建一个滚动文件附加程序,该附加程序配置有一个文件模式,其中包含正在运行的测试的系统属性。然后我会在它的开头设置测试的名称,并在最后手动触发翻转。

    【讨论】:

    • 听起来不错,但是如何在配置文件中设置该 sys 属性(老实说,我不知道该怎么做)。如果你能展示一些例子,那就太好了。提前谢谢你
    • 您能举个例子吗?对于假人)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    相关资源
    最近更新 更多