package org.jenkinsci.plugins.dockerbuildstep.log; import hudson.model.BuildListener; import java.io.IOException; import java.io.PrintStream; import java.nio.charset.Charset; /** * A helper class which offers various types of logging. Currently it provides plain logging directly into console log * and annotated log via {@link DockerConsoleAnnotator}. * * @author vjuranek * */ public class ConsoleLogger { private final BuildListener listener; private final DockerConsoleAnnotator annotator; public ConsoleLogger(BuildListener listener) { this.listener = listener; this.annotator = new DockerConsoleAnnotator(this.listener.getLogger()); } public BuildListener getListener() { return listener; } public PrintStream getLogger() { return listener.getLogger(); } public void logAnnot(String message) { logAnnot("", message); } public void logInfo(String message) { logAnnot("[Docker] INFO: ", message); } public void logWarn(String message) { logAnnot("[Docker] WARN: ", message); } public void logError(String message) { logAnnot("[Docker] ERROR: ", message); } /** * Logs annotated messages * * @param message * message to be annotated */ public void logAnnot(String prefix, String message) { byte[] msg = (prefix + message + "\n").getBytes(Charset.defaultCharset()); try { annotator.eol(msg, msg.length); } catch (IOException e) { listener.getLogger().println("Problem with writing into console log: " + e.getMessage()); } } /** * Logs plain text messages directly into console * * @param message * message in plain text */ public void log(String message) { listener.getLogger().println(message); } }