How to get rest-assured log into something printable in a text file

后端 未结 4 2258
攒了一身酷
攒了一身酷 2021-01-12 02:52

I\'m working into a method trying to change the default rest-assured log (which goes to the console) to a file using log4j.

It\'s a JUnit project which methods final

4条回答
  •  醉话见心
    2021-01-12 03:26

    Might be useful too: Here a class which redirects the restAssured log() calls to a supplied logger:

    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).
     * 

    * Usage:
    * initializing in @BeforeClass of the unit test: *

     *          ToLoggerPrintStream loggerPrintStream = new ToLoggerPrintStream( myLog );
     *          RestAssured.config = RestAssured.config().logConfig(
     *                                 new LogConfig( loggerPrintStream.getPrintStream(), true ) );
     * 
    * will redirect all log outputs of a ValidatableResponse to the supplied logger: *
     *             resp.then().log().all( true );
     * 
    * * @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; }

提交回复
热议问题