Log4j 集成springboot动态调整日志级别方式一
配置调整
配置调整
appenders level 调整为debug
<Console name="Console" target="SYSTEM_OUT">
<Filters>
<ThresholdFilter level="debug" onMatch="ACCEPT"
onMismatch="DENY" />
</Filters>
<PatternLayout pattern="${log_pattern}" />
</Console>
Logger level可以根据实际配置
<Properties>
<property name="output_log_level">info</property>
</Properties>
<loggers>
<!--default root logger,set the log level of root -->
<root level="${output_log_level}" includeLocation="false">
<appender-ref ref="Console" />
</root>
</loggers>
<Properties>
<property name="output_log_level">info</property>
</Properties>
<loggers>
<!--default root logger,set the log level of root -->
<root level="${output_log_level}" includeLocation="false">
<appender-ref ref="Console" />
</root>
</loggers>
代码调整
class级别调整
import org.springframework.boot.logging.LoggingSystem;
import org.apache.log4j.LogManager;
@Autowired
private LoggingSystem loggingSystem;
org.apache.log4j.Logger logger =
LogManager.getLogger(Controller.class);
loggingSystem.setLogLevel(logger.getName(), DEBUG);
全局调整
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.LoggerConfig;
/**
*
* @param loggerName Logger 配置中的 ref 比如Console
* @param level sample debug、info、error
* @return
*/
@PutMapping("/{loggerName}/level")
public Result setLogLevel(@PathVariable String loggerName,
@RequestParam String level) {
LOG.info("info");
LOG.debug("debug");
LoggerContext loggerContext =
(LoggerContext) LogManager.getContext(false);
Configuration configuration = loggerContext.getConfiguration();
LoggerConfig loggerConfig = configuration.getLoggerConfig(loggerName);
Level logLevel = Level.toLevel(level, Level.INFO);
loggerConfig.setLevel(logLevel);
loggerContext.updateLoggers(configuration);
LOG.info("info");
LOG.debug("debug");
return Result.success().data("");
}