log4j2 日志动态记录git参数${git.commit.id.abbrev}(二)

springboot项目日志记录版本git版本

1、在pom中引入对应的插件


                pl.project13.maven
                git-commit-id-plugin
                2.2.5
                
                    
                        get-the-git-infos
                        initialize
                        
                            revision
                        
                    
                
                
                    ${project.basedir}/.git
                    git
                    false
                    yyyy-MM-dd HH:mm:ss
                    true
                    ${project.build.outputDirectory}/git.properties
                    
                    properties
                    
                    7
                    
                        false
                        false
                        -dirty
                    
                
            

注意,这里插件生成的git.properties文件的格式properties类型的,上一篇中对应纯java项目完成该功能的配置,这里的格式json格式的。

2、log4j配置文件中引入git占位符

appender中添加向kafka中输入的日志模板,在模板中,包含git.commit.id.abbrev占位符:


            
            
                
                    
                    
                    
                    
                
            
            ${kafka.servers}
            5000
            5000
            3000
        

属性中增加如下两个配置:占位符内部冒号前面的git,指的是插件,在下一点中会处理这个插件

 ${git:git.commit.id.abbrev}
        ${git:git.tags}

3、自定义git插件

新增类GitLookup,作为git插件,完成log中git占位符的替换,内容如下:

package com.log.git.springboot;

import cn.hutool.setting.dialect.Props;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.lookup.AbstractLookup;
import org.apache.logging.log4j.core.lookup.StrLookup;

/**
 * GitLookup
 *
 * @author drebander
 * @since 2020-09-09 11:31 上午
 **/
@Plugin(name = "git", category = StrLookup.CATEGORY)
public class GitLookup extends AbstractLookup {
    private static final String PROPERTIES_NAME = "git.properties";

    private static final Props PROPS = new Props(PROPERTIES_NAME);

    @Override
    public String lookup(final LogEvent event, final String key) {
        return PROPS.getStr(key);
    }
}

4、验证效果

完成上面的操作之后,就会发现在输出的日志中,对应的git属性已经替换成了对应的值了。上面的源码中涉及到了hutools的使用,maven对于hutools的引用参照下面:

 
            cn.hutool
            hutool-all
            5.3.0
        

你可能感兴趣的:(log4j2 日志动态记录git参数${git.commit.id.abbrev}(二))