diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2016-09-09 14:13:21 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2016-09-09 14:13:21 +0200 |
commit | 8faf9c1fa69a69c24896b669626591a74f82cc49 (patch) | |
tree | 7260f4e335804f7c2abd1e3c273e317401860af0 /container-accesslogging | |
parent | f7b82574ed5c5d3403c257e87fe0cb4e46be92dd (diff) |
- Allow 100k elements in the logging Q.
- No need to flush after every message.
- Once every 5 seconds should do.
Diffstat (limited to 'container-accesslogging')
-rw-r--r-- | container-accesslogging/src/main/java/com/yahoo/container/logging/LogFileHandler.java | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/container-accesslogging/src/main/java/com/yahoo/container/logging/LogFileHandler.java b/container-accesslogging/src/main/java/com/yahoo/container/logging/LogFileHandler.java index 2632c3d9aac..8abc696deac 100644 --- a/container-accesslogging/src/main/java/com/yahoo/container/logging/LogFileHandler.java +++ b/container-accesslogging/src/main/java/com/yahoo/container/logging/LogFileHandler.java @@ -9,6 +9,7 @@ import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.TimeUnit; import java.util.logging.Formatter; import java.util.logging.Level; import java.util.logging.LogRecord; @@ -38,7 +39,7 @@ public class LogFileHandler extends StreamHandler { private OutputStream currentOutputStream = null; private String fileName; private String symlinkName = null; - private ArrayBlockingQueue<LogRecord> logQueue = new ArrayBlockingQueue<>(1000); + private ArrayBlockingQueue<LogRecord> logQueue = new ArrayBlockingQueue<>(100000); LogRecord rotateCmd = new LogRecord(Level.SEVERE, "rotateNow"); static private class LogThread extends Thread { @@ -61,12 +62,21 @@ public class LogFileHandler extends StreamHandler { } private void storeLogRecords() throws InterruptedException { + long lastFlush = 0; while (!isInterrupted()) { - LogRecord r = logFileHandler.logQueue.take(); - if (r == logFileHandler.rotateCmd) { - logFileHandler.internalRotateNow(); - } else { - logFileHandler.internalPublish(r); + LogRecord r = logFileHandler.logQueue.poll(100, TimeUnit.MILLISECONDS); + long now = System.nanoTime(); + if (r != null) { + if (r == logFileHandler.rotateCmd) { + logFileHandler.internalRotateNow(); + lastFlush = now; + } else { + logFileHandler.internalPublish(r); + } + } + if (TimeUnit.NANOSECONDS.toSeconds(now - lastFlush) > 5) { + logFileHandler.flush(); + lastFlush = now; } } } |