diff options
3 files changed, 28 insertions, 3 deletions
diff --git a/config-model-api/abi-spec.json b/config-model-api/abi-spec.json index ca736dd90d8..bdf2b53bc92 100644 --- a/config-model-api/abi-spec.json +++ b/config-model-api/abi-spec.json @@ -180,7 +180,8 @@ "abstract" ], "methods": [ - "public abstract void log(java.util.logging.Level, java.lang.String)" + "public abstract void log(java.util.logging.Level, java.lang.String)", + "public void logApplicationPackage(java.util.logging.Level, java.lang.String)" ], "fields": [] }, diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/DeployLogger.java b/config-model-api/src/main/java/com/yahoo/config/application/api/DeployLogger.java index 61cab2f6ce7..7271f3a394e 100644 --- a/config-model-api/src/main/java/com/yahoo/config/application/api/DeployLogger.java +++ b/config-model-api/src/main/java/com/yahoo/config/application/api/DeployLogger.java @@ -10,6 +10,14 @@ import java.util.logging.Level; */ public interface DeployLogger { + /** Log a message unrelated to the application package, e.g. internal error/status. */ void log(Level level, String message); + /** + * Log a message related to the application package. These messages should be actionable by the user, f.ex. to + * signal usage of invalid/deprecated syntax + */ + default void logApplicationPackage(Level level, String message) { + log(level, message); + } } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLogger.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLogger.java index 799b9ae21a8..9900557f000 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLogger.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLogger.java @@ -40,12 +40,28 @@ public class DeployHandlerLogger implements DeployLogger { if (level.intValue() <= LogLevel.DEBUG.intValue() && !verbose) return; + logJson(level, message); + // Also tee to a normal log, Vespa log for example, but use level fine + log.log(Level.FINE, () -> prefix + message); + } + + @Override + public void logApplicationPackage(Level level, String message) { + if (level.intValue() <= LogLevel.DEBUG.intValue() && !verbose) + return; + + Cursor entry = logJson(level, message); + entry.setBool("applicationPackage", true); + // Also tee to a normal log, Vespa log for example, but use level fine + log.log(Level.FINE, () -> prefix + message); + } + + private Cursor logJson(Level level, String message) { Cursor entry = logroot.addObject(); entry.setLong("time", System.currentTimeMillis()); entry.setString("level", level.getName()); entry.setString("message", message); - // Also tee to a normal log, Vespa log for example, but use level fine - log.log(Level.FINE, () -> prefix + message); + return entry; } public Slime slime() { |