【发布时间】:2017-03-29 08:53:38
【问题描述】:
我想动态更改所有(关于)我的 Web 应用程序控制器类的日志记录级别。每个进行日志记录的类都包含以下代码:
private static final Logger logger = LoggerFactory
.getLogger(HomeController.class);
我了解到 slf4j 不提供设置日志级别的功能,因此必须使用底层 log4j:
public static void setLogLevel(String level) {
org.apache.log4j.Logger logger4j = org.apache.log4j.Logger.getRootLogger();
logger4j.setLevel(org.apache.log4j.Level.toLevel(level.toUpperCase()));
logger.info("Sample Info After setLevel");
logger.debug("Sample Debug After setLevel");
logger.error("Sample Error After setLevel");
logger.trace("Sample Trace After setLevel");
logger.warn("Sample Warn After setLevel");
}
我的想法是有一个控制器方法来更改 logLevel 并可能将其存储在数据库中。我的问题是:如何在不复制和粘贴 40 多个文件中的所有内容并修改每个控制器方法的情况下优雅地解决这个问题?另请注意,记录器代码是静态的,而我的数据库访问不是静态的。
【问题讨论】: