添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
编程开发秘籍
  • php文档
  • IDEA在线图文教程
  • jenkins使用指南
  • angular范例
  • nodejs开发指南
  • ES开发指南
  • ELK折腾指南
  • 24设计模式&6原则
  • Docker指南
  • kl音乐汇
  • 关于博主
  • kl个人博客 首页 >> Spring >>spring boot动态调整线上日志级别

    spring boot动态调整线上日志级别

    spring boot动态调整线上日志级别

    日志模块是每个项目中必须的,用来记录程序运行中的相关信息。一般在开发环境下使用DEBUG级别的日志输出,为了方便查看问题,而在线上一般都使用INFO级别的日志,主要记录业务操作的日志。那么问题来了,当线上环境出现问题希望输出DEBUG日志信息辅助排查的时候怎么办呢?修改配置文件,重新打包然后上传重启线上环境,之前确实是这么做的。下面会介绍使用动态调整线上日志级别来解决这个问题。 我的spring boot版本:1.5.7 实现起来超级简单,使用spring boot自带的LoggingSystem的api来动态设置日志级别,当然的项目需要提供动态调整的接口,来达动态调整的目的。不过博主项目使用了Apollo配置中心,利用其配置动态生效的特性,soso就搞定了,代码如下

    @Service
    public class DynamicLoggersConfig{
    	Logger logger= LoggerFactory.getLogger(getClass());
    	@ApolloConfig
    	private Config config;
    	private final static String LoggerTag="logging.level.";
    	private final LoggingSystem loggingSystem;
    	public DynamicLoggersConfig(LoggingSystem loggingSystem) {
    		Assert.notNull(loggingSystem, "LoggingSystem must not be null");
    		this.loggingSystem = loggingSystem;
    	@ApolloConfigChangeListener
    	private void configChangeListter(ConfigChangeEvent changeEvent){
    		SetkeyNames=config.getPropertyNames();
    		for (String key:keyNames){
    			if (StringUtils.containsIgnoreCase(key,LoggerTag)){
    				String strLevel=config.getProperty(key,"info");
    				LogLevel level = LogLevel.valueOf(strLevel.toUpperCase());
    				loggingSystem.setLogLevel(key.replace(LoggerTag,""),level);
    				logger.info("{}:{}",key,strLevel);
    怎么配置?
    	和在spring环境下正常配置日志级别一样配置即可,如
    
    logging.level.org.springframework = info
    logging.level.com.yudianbank.sales = debug
    logging.level.org.hibernate = info
    如上代表spring体系工具开启INFO级别日志,业务系统开启DEBUG级别日志,hibernate开启INFO级别日志 动态日志输出看似小功能,却能解决非常大的问题。各种环境bug排除都少不了看日志输出。文件提到的Apollo是携程开源的配置中心项目,顺道推广下,感谢携程开源给了我们这么好的产品。项目地址如下 Apollo项目地址:https://github.com/ctripcorp/apollo Apollo配置中心技术支持QQ群:375526581,加群可以和博主畅聊技术

    kl个人博客