aboutsummaryrefslogtreecommitdiffstats
path: root/container-core/src/main/java/com/yahoo/container/logging/AccessLogHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-core/src/main/java/com/yahoo/container/logging/AccessLogHandler.java')
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/AccessLogHandler.java36
1 files changed, 36 insertions, 0 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/logging/AccessLogHandler.java b/container-core/src/main/java/com/yahoo/container/logging/AccessLogHandler.java
new file mode 100644
index 00000000000..89aab1513ee
--- /dev/null
+++ b/container-core/src/main/java/com/yahoo/container/logging/AccessLogHandler.java
@@ -0,0 +1,36 @@
+// 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;
+
+/**
+ * @author Bjorn Borud
+ */
+class AccessLogHandler {
+
+ private final LogFileHandler<RequestLogEntry> logFileHandler;
+
+ AccessLogHandler(AccessLogConfig.FileHandler config, LogWriter<RequestLogEntry> logWriter) {
+ logFileHandler = new LogFileHandler<>(
+ toCompression(config), config.pattern(), config.rotation(),
+ config.symlink(), config.queueSize(), "request-logger", logWriter);
+ }
+
+ public void log(RequestLogEntry entry) {
+ logFileHandler.publish(entry);
+ }
+
+ private LogFileHandler.Compression toCompression(AccessLogConfig.FileHandler config) {
+ if (!config.compressOnRotation()) return LogFileHandler.Compression.NONE;
+ switch (config.compressionFormat()) {
+ case ZSTD: return LogFileHandler.Compression.ZSTD;
+ case GZIP: return LogFileHandler.Compression.GZIP;
+ default: throw new IllegalArgumentException(config.compressionFormat().toString());
+ }
+ }
+
+ void shutdown() {
+ logFileHandler.close();
+ logFileHandler.shutdown();
+ }
+}