如何放心地登录到文本文件中可打印的内容

2023-11-23

我正在研究一种方法,尝试使用 log4j 将默认的放心日志(转到控制台)更改为文件。

这是一个 JUnit 项目,其方法最终调用 REST 外观,该外观具有类似这样的方法。

 private ResponseSpecification responseSpecification(RequestSpecification requestSpecification, Matcher matcher, int statusCode) {
        ResponseSpecification responseSpecification = requestSpecification.expect().statusCode(StatusCode).body(".", is(matcher));
        if (log) {
            responseSpecification = responseSpecification.log().all();
        }
        return responseSpecification;
    }

官方文档,我改变了这样的方法:

private ResponseSpecification responseSpecification(RequestSpecification requestSpecification, Matcher matcher, int statusCode) {
    final StringWriter writer = new StringWriter();
    final PrintStream captor = new PrintStream(new WriterOutputStream(writer), true);
    ResponseSpecification responseSpecification = requestSpecification.filter(logResponseTo(captor)).expect().statusCode(statusCode).body(".", is(matcher));
    System.out.println("writer = " + writer.toString() + " <-");
    return responseSpecification;
}

But writer.toString()始终打印一个空字符串(旧的实现工作正常)。也许我做错了什么,但是什么? :(

我需要获得可以通过 log4j 以这种或其他方式管理的可打印内容。

谁能帮我?


可能也有用:这里有一个类,它将restAssured log() 调用重定向到提供的记录器:

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import org.slf4j.Logger;

/**
 * A wrapper class which takes a logger as constructor argument and offers a PrintStream whose flush
 * method writes the written content to the supplied logger (debug level).
 * <p>
 * Usage:<br> 
 * initializing in @BeforeClass of the unit test:
 * <pre>
 *          ToLoggerPrintStream loggerPrintStream = new ToLoggerPrintStream( myLog );
 *          RestAssured.config = RestAssured.config().logConfig(
 *                                 new LogConfig( loggerPrintStream.getPrintStream(), true ) );
 * </pre>
 * will redirect all log outputs of a ValidatableResponse to the supplied logger:
 * <pre>
 *             resp.then().log().all( true );
 * </pre>
 *
 * @version 1.0 (28.10.2015)
 * @author  Heri Bender
 */
public class ToLoggerPrintStream
{
    /** Logger for this class */
    private Logger myLog;
    private PrintStream myPrintStream;

/**
 * @return printStream
 */
public PrintStream getPrintStream()
{
    if ( myPrintStream == null )
    {
        OutputStream output = new OutputStream()
        {
            private StringBuilder myStringBuilder = new StringBuilder();

            @Override
            public void write(int b) throws IOException 
            {
                this.myStringBuilder.append((char) b );
            }

            /**
             * @see java.io.OutputStream#flush()
             */
            @Override
            public void flush()
            {
                myLog.debug( this.myStringBuilder.toString() );
                myStringBuilder = new StringBuilder();
            }
        };

        myPrintStream = new PrintStream( output, true );  // true: autoflush must be set!
    }

    return myPrintStream;
}

/**
 * Constructor
 *
 * @param aLogger
 */
public ToLoggerPrintStream( Logger aLogger )
{
    super();
    myLog = aLogger;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何放心地登录到文本文件中可打印的内容 的相关文章

随机推荐

  • arm-none-eabi-ld:找不到-lc

    我正在尝试为基于 XMC1100 的开发板编写代码 我正在尝试这个教程 http eleceng dit ie frank arm BareMetalXMC2Go index html 我已经下载了blinky tar gz 文件并解压 当
  • 使用 ssl 公钥/私钥基于 Web 登录?

    是否可以通过网络浏览器创建需要公钥 私钥的登录过程 公钥将存储在服务器上 私钥将由用户保存 并加密 我基本上想做一些类似于 SSH 的事情 但是通过网络 也许是 HTTP 身份验证的自定义方法 摘要 除外 我知道使用普通浏览器可能无法做到这
  • 使用数据库表中的值生成下拉列表输入

    我正在尝试使用 Laravel 生成一个包含 MySQL 表中的值的下拉列表 表格很简单 两列 id and category 以下将检索所有记录 类别 但返回一个对象而不是数组 这是我需要的下拉代码 categories Category
  • 如何在Python中制作n维嵌套for循环? [复制]

    这个问题在这里已经有答案了 我有以下情况 for x1 in range x1 x2 for x2 in range x3 x4 for x3 f x1 x2 x3 如何将其转换为我只告诉 python 的机制n变量名称为 x1 x2 x3
  • 检测这是 iframe 加载还是直接加载

    我希望仅在 iframe 内的页面上拉出表单时才显示该表单 我怎么做 有服务器端解决方案吗 如果您使用 JQuery 安装说明如下 http jquery com document ready function if window wind
  • 指针和引用作为 const 对象的成员变量

    以下代码编译良好 不过我想知道它是否是合法的C 更具体地说 如果我有一个 const 对象 我是否可以通过该对象的指针 引用修改变量 class Foo public int a int b Foo int a int b a a b b
  • 关于Python日志记录中的NOTSET

    As the logger setLevel医生说 创建记录器时 级别设置为 NOTSET 这会导致当记录器是根记录器时处理所有消息 或者当记录器是非根记录器时将委托给父记录器 请注意 根记录器是使用 警告 级别创建的 所以我想如果我创建一
  • Angular:为什么 CSS 对齐不能与 ng-repeat 一起使用?

    我正在尝试做什么 我正在尝试均匀分布li in a ul 证明合法 当我硬编码时 CSS 可以工作li 但是当我使用ng repeat 不再应用CSS HTML div div ul class two column li li li li
  • Postgres 在全局范围内设置自动提交关闭

    如何在 psql 8 4 中全局级别设置自动提交 是否有一个我可以更改的配置属性 它将为集群上的所有数据库引入此行为 以在关闭自动提交的情况下启动数据库会话 只需添加以下内容即可 psqlrc set AUTOCOMMIT off 请注意
  • Dockerfile CMD“未找到命令”

    我有以下内容Dockerfile FROM nodesource node jessie ADD SOMEPATH RUN cd SOMEPATH npm install WORKDIR SOMEPATH CMD bash npm run
  • O(1) 和 θ(1) 有什么区别?

    我知道它们的定义 但是为什么我有时在教科书上看到O 1 有时看到 1 Thanks 如果您谈论的是实数函数 则 O 1 和 1 不一定相同 例如 考虑函数 f n 1 n 该函数的复杂度为 O 1 因为对于任何 n 1 f n 1 然而 它
  • NetworkStream 和 TcpClient 有多少缓冲区?

    我们正在编写一个TCP服务器和客户端程序 TcpClient 缓冲区有多少空间 比如 它什么时候会开始丢弃数据 我们正在尝试确定 TcpClient 是否可以阻塞 或者是否应该进入它自己的后台线程 以便缓冲区不会变满 您可以从以下位置获取缓
  • 如何正确处理 Angular 中滚动条的导航栏颜色变化?

    我正在做一个有角度的项目 我想添加一个最初具有透明背景的导航栏 但在滚动时它会改变其颜色 我正在为此使用引导类 我的导航栏标题是 html 代码
  • 如何在 Windows 上使用 xgettext 创建 .po 文件?

    我正在关注有关使用 PHP gettext 构建多语言网站的教程http onlamp com pub a php 2002 06 13 php html 我理解教程直到这一部分 拥有所有目录后 准备好了 是时候创建了 实际的 pot 文件
  • 使用 python 请求进行 twitter 抓取时如何执行 oauth

    我正在尝试检索用户最近的 100 条推文 它与 Python 中的 tweepy 模块配合良好 但是我怎样才能对 python 中的请求做同样的事情呢 我想要做 import requests r requests get https ap
  • 尝试使用 DatePicker 时不起作用[重复]

    这个问题在这里已经有答案了 可能的重复 Android CalendarView 类找不到 我尝试在布局中放置一个日期选择器 但它只显示 DatePicker 和这个错误 The following classes could not be
  • 关于javaagents的教程[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想了解一些有关 javaagents 的知识 但研究并不容易 大部分结果是指JADE 我知道java代理有两层含义 用 Java 编写的代理是代理
  • 如何在 x86 中使用 CPUID 指令接收 L1、L2 和 L3 缓存大小

    我在准备一个汇编x86项目时遇到了一个问题 该项目的主题是编写一个获取L1数据 L1代码 L2和L3缓存大小的程序 我尝试在英特尔文档和互联网中查找一些内容 但失败了 主要问题是 对于 AMD 处理器 只需将 EAX 寄存器设置为 8000
  • Internet Explorer 自动切换到兼容模式(IE9 和 IE10)

    在我网站的某些页面上 Internet Explorer 自动切换到兼容模式并尝试在兼容视图 IE7 模式 中呈现该页面 URL 也会添加到兼容性视图列表中 就我而言 这是由于某些 CSS 使用 Type 1 字体 黑体 Internet
  • 如何放心地登录到文本文件中可打印的内容

    我正在研究一种方法 尝试使用 log4j 将默认的放心日志 转到控制台 更改为文件 这是一个 JUnit 项目 其方法最终调用 REST 外观 该外观具有类似这样的方法 private ResponseSpecification respo