summaryrefslogtreecommitdiffstats
path: root/container-accesslogging
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2016-09-09 14:13:21 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2016-09-09 14:13:21 +0200
commit8faf9c1fa69a69c24896b669626591a74f82cc49 (patch)
tree7260f4e335804f7c2abd1e3c273e317401860af0 /container-accesslogging
parentf7b82574ed5c5d3403c257e87fe0cb4e46be92dd (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.java22
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;
}
}
}