diff options
Diffstat (limited to 'container-accesslogging/src/main/java/com/yahoo/container/logging/AccessLogHandler.java')
-rw-r--r-- | container-accesslogging/src/main/java/com/yahoo/container/logging/AccessLogHandler.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/container-accesslogging/src/main/java/com/yahoo/container/logging/AccessLogHandler.java b/container-accesslogging/src/main/java/com/yahoo/container/logging/AccessLogHandler.java new file mode 100644 index 00000000000..488a6137cc2 --- /dev/null +++ b/container-accesslogging/src/main/java/com/yahoo/container/logging/AccessLogHandler.java @@ -0,0 +1,48 @@ +// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.container.logging; + +import com.yahoo.container.core.AccessLogConfig; + +import java.util.logging.Logger; + +/** + * @author Bjorn Borud + */ +class AccessLogHandler { + + public Logger access = Logger.getAnonymousLogger(); + private LogFileHandler logFileHandler; + + public AccessLogHandler(AccessLogConfig.FileHandler config) { + access.setUseParentHandlers(false); + + logFileHandler = new LogFileHandler(config.compressOnRotation()); + + logFileHandler.setFilePattern(config.pattern()); + logFileHandler.setRotationTimes(config.rotation()); + + createSymlink(config, logFileHandler); + + LogFormatter lf = new LogFormatter(); + lf.messageOnly(true); + this.logFileHandler.setFormatter(lf); + access.addHandler(this.logFileHandler); + } + + private void createSymlink(AccessLogConfig.FileHandler config, LogFileHandler handler) { + if (!config.symlink().isEmpty()) + handler.setSymlinkName(config.symlink()); + } + + public void shutdown() { + logFileHandler.close(); + access.removeHandler(logFileHandler); + + if (logFileHandler!=null) + logFileHandler.shutdown(); + } + + void rotateNow() { + logFileHandler.rotateNow(); + } +} |