diff options
author | Harald Musum <musum@verizonmedia.com> | 2020-01-13 11:11:29 +0100 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2020-01-13 11:11:29 +0100 |
commit | 088f0fc4346adb1acea0ae9ac3b4487b826b767a (patch) | |
tree | fb561a97e252f17c13a9264e2eb597ea6f0a0456 /vespalog/src | |
parent | 4976b922193b1071db4711328caf31bc54e1a0d1 (diff) |
Configure ZooKeeper log file handler
Diffstat (limited to 'vespalog/src')
-rw-r--r-- | vespalog/src/main/java/com/yahoo/log/LogSetup.java | 20 | ||||
-rw-r--r-- | vespalog/src/test/java/com/yahoo/log/LogSetupTestCase.java | 8 |
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]); } |