package org.datadog.jmxfetch.util; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; import org.apache.log4j.RollingFileAppender; import com.google.common.collect.HashMultiset; import com.google.common.collect.Multiset; public class CustomLogger { private static final Logger LOGGER = Logger.getLogger(CustomLogger.class.getName()); private static final Multiset<String> messageCount = HashMultiset.create(); public static void setup(Level level, String logLocation) { if (logLocation != null) { RollingFileAppender fa = new RollingFileAppender(); fa.setName("FileLogger"); fa.setFile(logLocation); fa.setMaxFileSize("5MB"); fa.setMaxBackupIndex(1); fa.setLayout(new PatternLayout("%d | %-5p| %c{1} | %m%n")); fa.setThreshold(level); fa.setAppend(true); fa.activateOptions(); Logger.getRootLogger().addAppender(fa); LOGGER.info("File Handler set"); } else { System.out.println("Log location is not set, not logging to file"); } } public static void laconic(Logger logger, Level level, String message, int max) { if (messageCount.count(message) <= max) { logger.log(level, message); messageCount.add(message); } } private CustomLogger() {} }