summaryrefslogtreecommitdiffstats
path: root/jdisc_http_service/src/main/java/com/yahoo/container/logging/AccessLogHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'jdisc_http_service/src/main/java/com/yahoo/container/logging/AccessLogHandler.java')
-rw-r--r--jdisc_http_service/src/main/java/com/yahoo/container/logging/AccessLogHandler.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/jdisc_http_service/src/main/java/com/yahoo/container/logging/AccessLogHandler.java b/jdisc_http_service/src/main/java/com/yahoo/container/logging/AccessLogHandler.java
new file mode 100644
index 00000000000..488a6137cc2
--- /dev/null
+++ b/jdisc_http_service/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();
+ }
+}