All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.jooby.logback.LogbackService Maven / Gradle / Ivy

There is a newer version: 3.3.1
Show newest version
/*
 * Jooby https://jooby.io
 * Apache License Version 2.0 https://jooby.io/LICENSE.txt
 * Copyright 2014 Edgar Espina
 */
package io.jooby.logback;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.slf4j.LoggerFactory;

import ch.qos.logback.classic.Level;
import io.jooby.LoggingService;
import io.jooby.SneakyThrows;

public class LogbackService implements LoggingService {
  @Override
  public String getPropertyName() {
    return "logback.configurationFile";
  }

  @Override
  public List getLogFileName() {
    return List.of("logback.xml");
  }

  @Override
  public void logOff(List logger, SneakyThrows.Runnable task) {
    Map state = new HashMap<>();
    try {
      for (String it : logger) {
        state.put(it, setLogbackLevel(it, Level.OFF));
      }
      task.run();
    } finally {
      for (Map.Entry e : state.entrySet()) {
        setLogbackLevel(e.getKey(), e.getValue());
      }
    }
  }

  private static Level setLogbackLevel(String name, Level level) {
    var logger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(name);
    var existingLevel = logger.getLevel();
    logger.setLevel(level);
    return existingLevel;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy