diff options
Diffstat (limited to 'dicore3/core/src/main/java/io/dico/dicore/Logging.java')
-rw-r--r-- | dicore3/core/src/main/java/io/dico/dicore/Logging.java | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/dicore3/core/src/main/java/io/dico/dicore/Logging.java b/dicore3/core/src/main/java/io/dico/dicore/Logging.java new file mode 100644 index 0000000..fa2a676 --- /dev/null +++ b/dicore3/core/src/main/java/io/dico/dicore/Logging.java @@ -0,0 +1,116 @@ +package io.dico.dicore; + +import java.util.logging.Logger; + +public interface Logging { + + void info(Object o); + + void warn(Object o); + + void error(Object o); + + void debug(Object o); + + void setDebugging(boolean debugging); + + boolean isDebugging(); + + class RootLogging implements Logging { + private final String prefix; + private final Logger root; + private boolean debugging; + + public RootLogging(String prefix, Logger root, boolean debugging) { + this.root = root; + this.prefix = prefix; + this.debugging = debugging; + } + + @Override + public void info(Object o) { + root.info(prefix(o)); + } + + @Override + public void warn(Object o) { + root.warning(prefix(o)); + } + + @Override + public void error(Object o) { + root.severe(prefix(o)); + } + + @Override + public void debug(Object o) { + if (debugging) { + root.info(String.format("[DEBUG] %s", prefix(o))); + } + } + + @Override + public boolean isDebugging() { + return debugging; + } + + @Override + public void setDebugging(boolean debugging) { + this.debugging = debugging; + } + + private String prefix(Object o) { + return String.format("[%s] %s", prefix, String.valueOf(o)); + } + } + + class SubLogging implements Logging { + protected String prefix; + private final Logging superLogger; + private boolean debugging; + + public SubLogging(String prefix, Logging superLogger, boolean debugging) { + this.superLogger = superLogger; + this.prefix = prefix; + this.debugging = debugging; + } + + @Override + public void info(Object o) { + superLogger.info(prefix(o)); + } + + @Override + public void warn(Object o) { + superLogger.warn(prefix(o)); + } + + @Override + public void error(Object o) { + superLogger.error(prefix(o)); + } + + @Override + public void debug(Object o) { + if (debugging) { + superLogger.info(String.format("[DEBUG] %s", prefix(o))); + } + } + + @Override + public boolean isDebugging() { + return debugging; + } + + @Override + public void setDebugging(boolean debugging) { + this.debugging = debugging; + } + + private String prefix(Object o) { + return String.format("[%s] %s", prefix, String.valueOf(o)); + } + + } + +} |