@Override public void output(Map<String, String> metrics) { for (String metricName : metrics.keySet()) { final String fileName = String.join(".", getNamePrefix(), metricName, "dat"); RollingFileAppenderExt appender = metricsAppenders.computeIfAbsent(metricName, (key) -> { String finalPath = Paths.get(getRollingRootFilePath(), fileName).toString(); RollingFileAppenderExt fileAppender = new RollingFileAppenderExt(); fileAppender.setLogPermission("rw-------"); fileAppender.setFile(finalPath); fileAppender.setLayout(new PatternLayout("%m%n")); fileAppender.setAppend(true); fileAppender.setMaxFileSize(getMaxRollingFileSize()); fileAppender.setMaxBackupIndex(getMaxRollingFileCount()); fileAppender.activateOptions(); return fileAppender; }); LoggingEvent event = new LoggingEvent(fileName, Logger.getLogger(fileName), Level.ALL, metrics.get(metricName), null); appender.append(event); } } }