diff options
Diffstat (limited to 'src/main/java/com/google/devtools')
4 files changed, 35 insertions, 15 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerModule.java b/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerModule.java index d4f74e4d6e..c8fbc7160c 100644 --- a/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerModule.java +++ b/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerModule.java @@ -33,7 +33,8 @@ public final class SkylarkDebuggerModule extends BlazeModule { SkylarkDebuggerOptions buildOptions = env.getOptions().getOptions(SkylarkDebuggerOptions.class); boolean enabled = buildOptions != null && buildOptions.debugSkylark; if (enabled) { - initializeDebugging(env.getReporter(), buildOptions.debugServerPort); + initializeDebugging( + env.getReporter(), buildOptions.debugServerPort, buildOptions.verboseLogs); } else { disableDebugging(); } @@ -61,10 +62,10 @@ public final class SkylarkDebuggerModule extends BlazeModule { disableDebugging(); } - private static void initializeDebugging(Reporter reporter, int debugPort) { + private static void initializeDebugging(Reporter reporter, int debugPort, boolean verboseLogs) { try { SkylarkDebugServer server = - SkylarkDebugServer.createAndWaitForConnection(reporter, debugPort); + SkylarkDebugServer.createAndWaitForConnection(reporter, debugPort, verboseLogs); DebugServerUtils.initializeDebugServer(server); } catch (IOException e) { reporter.handle(Event.error("Error while setting up the debug server: " + e.getMessage())); diff --git a/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerOptions.java b/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerOptions.java index 19fbc23450..4adc962aaf 100644 --- a/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerOptions.java +++ b/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerOptions.java @@ -41,4 +41,13 @@ public final class SkylarkDebuggerOptions extends OptionsBase { metadataTags = {OptionMetadataTag.EXPERIMENTAL}, help = "The port on which the Skylark debug server will listen for connections.") public int debugServerPort; + + @Option( + name = "experimental_skylark_debug_verbose_logging", + defaultValue = "false", + documentationCategory = OptionDocumentationCategory.UNDOCUMENTED, + effectTags = {OptionEffectTag.TERMINAL_OUTPUT}, + metadataTags = {OptionMetadataTag.EXPERIMENTAL}, + help = "Show verbose logs for the debugger.") + public boolean verboseLogs; } diff --git a/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransport.java b/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransport.java index 5f5020f29a..34b2f3abec 100644 --- a/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransport.java +++ b/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransport.java @@ -23,7 +23,6 @@ import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; -import java.util.logging.Logger; import javax.annotation.Nullable; /** @@ -47,8 +46,6 @@ final class DebugServerTransport { clientSocket.getOutputStream()); } - private static final Logger logger = Logger.getLogger(DebugServerTransport.class.getName()); - private final EventHandler eventHandler; private final ServerSocket serverSocket; private final Socket clientSocket; @@ -77,7 +74,7 @@ final class DebugServerTransport { synchronized (requestStream) { try { DebugRequest request = DebugRequest.parseDelimitedFrom(requestStream); - logger.fine("Received debug client request:\n" + request); + eventHandler.handle(Event.debug("Received debug client request:\n" + request)); return request; } catch (IOException e) { handleParsingError(e); @@ -98,7 +95,7 @@ final class DebugServerTransport { /** Posts a debug event. */ void postEvent(DebugEvent event) { - logger.fine("Sending debug event:\n" + event); + eventHandler.handle(Event.debug("Sending debug event:\n" + event)); synchronized (eventStream) { try { event.writeDelimitedTo(eventStream); diff --git a/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServer.java b/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServer.java index 433f4ef4cc..26f31793c2 100644 --- a/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServer.java +++ b/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServer.java @@ -19,6 +19,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Throwables; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; +import com.google.devtools.build.lib.events.EventKind; import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.skylarkdebugging.SkylarkDebuggingProtos; import com.google.devtools.build.lib.syntax.DebugServer; @@ -30,7 +31,6 @@ import java.io.IOException; import java.net.ServerSocket; import java.util.List; import java.util.function.Function; -import java.util.logging.Logger; import javax.annotation.Nullable; /** Manages the network socket and debugging state for threads running Skylark code. */ @@ -41,29 +41,42 @@ public final class SkylarkDebugServer implements DebugServer { * debug server socket and blocks waiting for an incoming connection. * * @param port the port on which the server should listen for connections + * @param verboseLogging if false, debug-level events will be suppressed * @throws IOException if an I/O error occurs while opening the socket or waiting for a connection */ - public static SkylarkDebugServer createAndWaitForConnection(EventHandler eventHandler, int port) - throws IOException { + public static SkylarkDebugServer createAndWaitForConnection( + EventHandler eventHandler, int port, boolean verboseLogging) throws IOException { ServerSocket serverSocket = new ServerSocket(port, /* backlog */ 1); - return createAndWaitForConnection(eventHandler, serverSocket); + return createAndWaitForConnection(eventHandler, serverSocket, verboseLogging); } /** * Initializes debugging support, setting up any debugging-specific overrides, then opens the * debug server socket and blocks waiting for an incoming connection. * + * @param verboseLogging if false, debug-level events will be suppressed * @throws IOException if an I/O error occurs while waiting for a connection */ @VisibleForTesting static SkylarkDebugServer createAndWaitForConnection( - EventHandler eventHandler, ServerSocket serverSocket) throws IOException { + EventHandler eventHandler, ServerSocket serverSocket, boolean verboseLogging) + throws IOException { + if (!verboseLogging) { + eventHandler = getHandlerSuppressingDebugEvents(eventHandler); + } DebugServerTransport transport = DebugServerTransport.createAndWaitForClient(eventHandler, serverSocket); return new SkylarkDebugServer(eventHandler, transport); } - private static final Logger logger = Logger.getLogger(SkylarkDebugServer.class.getName()); + /** Wraps an event handler, suppressing debug-level events. */ + private static EventHandler getHandlerSuppressingDebugEvents(EventHandler handler) { + return event -> { + if (event.getKind() != EventKind.DEBUG) { + handler.handle(event); + } + }; + } private final EventHandler eventHandler; /** Handles all thread-related state. */ @@ -120,7 +133,7 @@ public final class SkylarkDebugServer implements DebugServer { @Override public void close() { try { - logger.fine("Closing debug server"); + eventHandler.handle(Event.debug("Closing debug server")); transport.close(); } catch (IOException e) { |