Skip to content

Commit

Permalink
Use pretty printer for logging
Browse files Browse the repository at this point in the history
  • Loading branch information
pontusmelke committed Sep 14, 2017
1 parent 8f72b2d commit 34f38cb
Show file tree
Hide file tree
Showing 11 changed files with 276 additions and 178 deletions.
Expand Up @@ -23,6 +23,7 @@
import java.util.function.Supplier;

import org.neo4j.kernel.api.exceptions.Status;
import org.neo4j.values.virtual.MapValue;

public interface BoltMessageLogger
{
Expand All @@ -42,7 +43,7 @@ public interface BoltMessageLogger

void logInit( String userAgent );

void logRun( String statement, Supplier<Map<String, Object>> parametersSupplier );
void logRun( String statement, Supplier<MapValue> parametersSupplier );

void logPullAll();

Expand All @@ -52,7 +53,7 @@ public interface BoltMessageLogger

void logReset();

void logSuccess( Supplier<String> metadataSupplier );
void logSuccess( Supplier<MapValue> metadataSupplier );

void logFailure( Status status );

Expand Down
Expand Up @@ -20,18 +20,21 @@

package org.neo4j.bolt.logging;

import io.netty.channel.Channel;
import io.netty.util.AttributeKey;
import org.codehaus.jackson.map.ObjectMapper;

import java.io.IOException;
import java.util.Map;
import java.util.UUID;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Supplier;

import io.netty.channel.Channel;
import io.netty.util.AttributeKey;
import org.codehaus.jackson.map.ObjectMapper;

import org.neo4j.kernel.api.exceptions.Status;
import org.neo4j.values.AnyValue;
import org.neo4j.values.utils.PrettyPrinter;
import org.neo4j.values.virtual.MapValue;

import static java.lang.String.format;

Expand Down Expand Up @@ -107,9 +110,9 @@ public void logInit( String userAgent )
}

@Override
public void logRun( String statement, Supplier<Map<String, Object>> parametersSupplier )
public void logRun( String statement, Supplier<MapValue> parametersSupplier )
{
clientEvent( "RUN", () -> format( "%s %s", json(statement), json( parametersSupplier.get() ) ) );
clientEvent( "RUN", () -> format( "%s %s", json( statement ), formatAnyValue( parametersSupplier.get() ) ) );
}

@Override
Expand Down Expand Up @@ -137,9 +140,9 @@ public void logReset()
}

@Override
public void logSuccess( Supplier<String> metadataSupplier )
public void logSuccess( Supplier<MapValue> metadataSupplier )
{
serverEvent( "SUCCESS", () -> json( metadataSupplier.get() ) );
serverEvent( "SUCCESS", () -> formatAnyValue( metadataSupplier.get() ) );
}

@Override
Expand Down Expand Up @@ -206,4 +209,10 @@ private static String json( Object arg )
}
}

private static String formatAnyValue( AnyValue mapValue )
{
PrettyPrinter printer = new PrettyPrinter();
mapValue.writeTo( printer );
return printer.value();
}
}
Expand Up @@ -23,6 +23,7 @@
import java.util.function.Supplier;

import org.neo4j.kernel.api.exceptions.Status;
import org.neo4j.values.virtual.MapValue;

public class NullBoltMessageLogger implements BoltMessageLogger
{
Expand Down Expand Up @@ -78,7 +79,7 @@ public void logInit( String userAgent )
}

@Override
public void logRun( String statement, Supplier<Map<String, Object>> parametersSupplier )
public void logRun( String statement, Supplier<MapValue> parametersSupplier )
{
}

Expand All @@ -103,7 +104,7 @@ public void logReset()
}

@Override
public void logSuccess( Supplier<String> metadataSupplier )
public void logSuccess( Supplier<MapValue> metadataSupplier )
{
}

Expand Down
Expand Up @@ -23,13 +23,14 @@
import java.util.function.Supplier;

import org.neo4j.bolt.logging.BoltMessageLogger;
import org.neo4j.cypher.internal.javacompat.BaseToObjectValueWriter;
import org.neo4j.cypher.result.QueryResult;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.spatial.Point;
import org.neo4j.helpers.BaseToObjectValueWriter;
import org.neo4j.kernel.api.exceptions.Status;
import org.neo4j.values.AnyValue;
import org.neo4j.values.utils.PrettyPrinter;
import org.neo4j.values.virtual.MapValue;

import static org.neo4j.bolt.v1.messaging.BoltResponseMessage.FAILURE;
Expand Down Expand Up @@ -84,7 +85,7 @@ public void onRecord( QueryResult.Record item ) throws IOException
@Override
public void onSuccess( MapValue metadata ) throws IOException
{
messageLogger.logSuccess( metadataSupplier( metadata ) );
messageLogger.logSuccess( () -> metadata );
packer.packStructHeader( 1, SUCCESS.signature() );
packer.packRawMap( metadata );
onMessageComplete.onMessageComplete();
Expand All @@ -94,9 +95,9 @@ private Supplier<String> metadataSupplier( MapValue metadata )
{
return () ->
{
MapToObjectWriter writer = new MapToObjectWriter();
metadata.writeTo( writer );
return writer.value().toString();
PrettyPrinter printer = new PrettyPrinter();
metadata.writeTo( printer );
return printer.value();
};
}

Expand Down
Expand Up @@ -19,8 +19,6 @@
*/
package org.neo4j.bolt.logging;

import java.net.InetSocketAddress;

import io.netty.channel.Channel;
import io.netty.util.Attribute;
import org.junit.Before;
Expand All @@ -29,16 +27,21 @@
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;

import java.net.InetSocketAddress;

import org.neo4j.bolt.v1.runtime.Neo4jError;
import org.neo4j.helpers.ValueUtils;
import org.neo4j.helpers.collection.MapUtil;
import org.neo4j.kernel.DeadlockDetectedException;
import org.neo4j.values.virtual.VirtualValues;

import static java.util.Collections.singletonMap;

import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import static org.neo4j.bolt.logging.BoltMessageLoggerImpl.CORRELATION_ATTRIBUTE_KEY;
import static org.neo4j.helpers.ValueUtils.asMapValue;
import static org.neo4j.helpers.collection.MapUtil.map;

@RunWith( MockitoJUnitRunner.class )
public class BoltMessageLoggerImplTest
Expand Down Expand Up @@ -118,9 +121,9 @@ public void logInit() throws Exception
public void logRun() throws Exception
{
// when
boltMessageLogger.logRun( "RETURN 42", () -> singletonMap( "param1", "value" ) );
boltMessageLogger.logRun( "RETURN 42", () -> asMapValue( singletonMap( "param1", "value" ) ) );
// then
verify( boltMessageLog ).info( REMOTE_ADDRESS, CORRELATION_ID, "C RUN \"RETURN 42\" {\"param1\":\"value\"}" );
verify( boltMessageLog ).info( REMOTE_ADDRESS, CORRELATION_ID, "C RUN \"RETURN 42\" {param1: \"value\"}" );
}

@Test
Expand Down Expand Up @@ -154,9 +157,9 @@ public void logReset() throws Exception
public void logSuccess() throws Exception
{
// when
boltMessageLogger.logSuccess( () -> "metadata" );
boltMessageLogger.logSuccess( () -> asMapValue( map( "key", "value" ) ) );
// then
verify( boltMessageLog ).info( REMOTE_ADDRESS, CORRELATION_ID, "S SUCCESS \"metadata\"" );
verify( boltMessageLog ).info( REMOTE_ADDRESS, CORRELATION_ID, "S SUCCESS {key: \"value\"}" );
}

@Test
Expand Down
Expand Up @@ -66,7 +66,7 @@ enum ArrayType

default void writeUTF8( byte[] bytes, int offset, int length ) throws E
{
writeString( new String(bytes, offset, length, StandardCharsets.UTF_8) );
writeString( new String( bytes, offset, length, StandardCharsets.UTF_8 ) );
}

default void writeString( char[] value ) throws E
Expand Down

0 comments on commit 34f38cb

Please sign in to comment.