aboutsummaryrefslogtreecommitdiffstats
path: root/vespalog
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-01-13 11:11:29 +0100
committerHarald Musum <musum@verizonmedia.com>2020-01-13 11:11:29 +0100
commit088f0fc4346adb1acea0ae9ac3b4487b826b767a (patch)
treefb561a97e252f17c13a9264e2eb597ea6f0a0456 /vespalog
parent4976b922193b1071db4711328caf31bc54e1a0d1 (diff)
Configure ZooKeeper log file handler
Diffstat (limited to 'vespalog')
-rw-r--r--vespalog/src/main/java/com/yahoo/log/LogSetup.java20
-rw-r--r--vespalog/src/test/java/com/yahoo/log/LogSetupTestCase.java8
2 files changed, 17 insertions, 11 deletions
diff --git a/vespalog/src/main/java/com/yahoo/log/LogSetup.java b/vespalog/src/main/java/com/yahoo/log/LogSetup.java
index c29374b433b..df642f23075 100644
--- a/vespalog/src/main/java/com/yahoo/log/LogSetup.java
+++ b/vespalog/src/main/java/com/yahoo/log/LogSetup.java
@@ -147,7 +147,7 @@ public class LogSetup {
}
Logger.getLogger("").setLevel(Level.ALL);
logHandler = new VespaLogHandler(getLogTargetFromString(target), new VespaLevelControllerRepo(logCtlFn, lev, app), service, app);
- String zookeeperLogFile = System.getProperty("zookeeperlogfile");
+ String zookeeperLogFile = System.getProperty("zookeeper_log_file_prefix");
if (zookeeperLogFile != null) {
zooKeeperFilter = new ZooKeeperFilter(zookeeperLogFile);
logHandler.setFilter(zooKeeperFilter);
@@ -168,28 +168,32 @@ public class LogSetup {
/**
* Class that has an isLoggable methods that handles log records that
- * start with "org.apache.zookeeper." in
- * a special way (writing them to the logfile specified in the system property
- * zookeeperlogfile, "/tmp/zookeeper.log" if not set) and returning false.
+ * start with "org.apache.zookeeper." or "org.apache.curator"
+ * (writing them to a log file with the prefix specified in the system property
+ * zookeeper_log_file_prefix) and returning false.
* For other log records, isLoggable returns true
*/
static class ZooKeeperFilter implements Filter {
+ private static final int FILE_SIZE = 10*1024*1024; // Max 10 Mb per log file
+ private static final int maxFilesCount = 10; // Keep at most 10 log files
+
private FileHandler fileHandler;
- ZooKeeperFilter(String logFile) {
+ ZooKeeperFilter(String logFilePrefix) {
+ String logFilePattern = logFilePrefix + ".%g.log";
try {
- fileHandler = new FileHandler(logFile, true);
+ fileHandler = new FileHandler(logFilePattern, FILE_SIZE, maxFilesCount, true);
fileHandler.setFormatter(new VespaFormatter());
} catch (IOException e) {
- System.out.println("Not able to create " + logFile);
+ System.out.println("Not able to create " + logFilePattern);
fileHandler = null;
}
}
/**
* Return true if loggable (ordinary log record), returns false if this filter
- * logs it itself
+ * logs the log record itself
*
* @param record a #{@link LogRecord}
* @return true if loggable, false otherwise
diff --git a/vespalog/src/test/java/com/yahoo/log/LogSetupTestCase.java b/vespalog/src/test/java/com/yahoo/log/LogSetupTestCase.java
index 2cea88b1c36..230744bb26f 100644
--- a/vespalog/src/test/java/com/yahoo/log/LogSetupTestCase.java
+++ b/vespalog/src/test/java/com/yahoo/log/LogSetupTestCase.java
@@ -9,6 +9,7 @@ import org.junit.rules.TemporaryFolder;
import java.io.File;
import java.io.IOException;
import java.time.Instant;
+import java.util.Arrays;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
@@ -80,7 +81,7 @@ public class LogSetupTestCase {
public void testSetup() throws IOException {
try {
final File zookeeperLogFile = folder.newFile("zookeeper.log");
- System.setProperty("zookeeperlogfile", zookeeperLogFile.getAbsolutePath());
+ System.setProperty("zookeeper_log_file_prefix", zookeeperLogFile.getAbsolutePath());
LogSetup.initVespaLogging("TST");
Logger.getLogger("").log(VespaLogHandlerTestCase.record2);
Logger.getLogger("").log(VespaLogHandlerTestCase.record1);
@@ -125,12 +126,13 @@ public class LogSetupTestCase {
@Test
public void testZooKeeperFilter() throws IOException {
- final File file = folder.newFile("zookeeper.log");
+ final File file = folder.newFile("zookeeper");
LogSetup.ZooKeeperFilter filter = new LogSetup.ZooKeeperFilter(file.getAbsolutePath());
assertThat(filter.isLoggable(zookeeperLogRecord), is(false));
//assertThat(filter.isLoggable(zookeeperLogRecordError), is(true));
assertThat(filter.isLoggable(notzookeeperLogRecord), is(true));
- String[] lines = VespaLogHandlerTestCase.readFile(file.getAbsolutePath());
+ File actualLogFile = new File(file.getParent(), "zookeeper.0.log"); // Real file name will have .0.log appended
+ String[] lines = VespaLogHandlerTestCase.readFile(actualLogFile.getAbsolutePath());
assertThat(lines.length, is(1));
assertEquals(zookeeperLogRecordString, lines[0]);
}