栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot日志输出控制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot日志输出控制

配置输出控制台
logback-spring.xml


    logback

	
    
        
            
            %d{HH:mm:ss} [%X{RequestId}] %-5level %logger{50}:%line - %msg%n
            UTF-8
        
    

	
    
    
        
    


配置输出日志文件
logback-spring.xml


    logback

	
    

	
    
        
        
            
            
                ${LOG_HOME}/%d{yyyy-MM}/%d{yyyy-MM-dd}.log
            
            
            30
            
            5GB
        
        
            
            100MB
        
        
            
                
                %d{HH:mm:ss} [%X{RequestId}] %-5level %logger{50}:%line - %msg%n
                UTF-8
            
        
    

	
    
        
        
    

配置输出ES
logback-spring.xml


    logback
    
    
    

    
        http://elasticsearch.y8zh.com/_bulk
        logback-${SPRING_PROFILES_ACTIVE}-${SPRING_APPLICATION_NAME}-%date{yyyy-MM}
        app-log

        es-error-logger 
        30000 
        false 
        false 
        false 
        104857600 
        3 
        30000 
        250 
        false 
        false 
        1000 
         
        
            
                host
                ${HOSTNAME}
                false
            
            
                route
                %X{Route}
                false
            
            
                method
                %X{Method}
                false
            
            
                httpCode
                %X{HttpCode}
                false
            
            
                requestId
                %X{RequestId}
                false
            
            
                requestIp
                %X{RequestIp}
                false
            
            
                severity
                %level
            
            
                stacktrace
                %ex
            
            
                logger
                %logger:%line
            
        
        
            
Content-Type application/json

注意:%X{Route}、%X{Method}、%X{HttpCode}、%X{RequestId}、%X{RequestIp},这些值可以通过下面这种方式得到!


@Component
public class MDCFilter implements Filter {
    
    private static final String REQUEST_ID_HEADER = "RequestId";
    
    private static final String REQUEST_ID = "RequestId";
    private static final String ROUTE = "Route";
    private static final String METHOD = "Method";
    @Value("${spring.application.name}")
    private String _applicationName;

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
                         FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
        HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;

        String requestId = httpRequest.getHeader(REQUEST_ID_HEADER);
        if (requestId == null) {
            requestId = "111111111111";
        }

        requestId = "111111111111";

        // 还有更加准确的方法
        String ip = getRequestSourceIp(httpRequest);

        MDC.put(REQUEST_ID, requestId);
        MDC.put(ROUTE, "-");
        MDC.put(METHOD, httpRequest.getMethod());
        MDC.put("RequestIp", ip);
        httpResponse.setHeader(REQUEST_ID_HEADER, requestId);

        try {
            filterChain.doFilter(httpRequest, httpResponse);
        } finally {
            MDC.clear();
        }
    }

    
    public static String getRequestSourceIp(HttpServletRequest request) {
        String ip = request.getHeader("HTTP_CLIENT_IP");

        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");
        }

        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_X_FORWARDED");
        }

        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_FORWARDED");
        }

        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("X-FORWARDED-FOR");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }

        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        if (ip.equals("0:0:0:0:0:0:0:1")) {
            ip = "127.0.0.1";
        }
        return ip;
    }
}

排除日志
logback-spring.xml


    logback
	
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

完整配置
logback-spring.xml


    logback
    
    
    

    
    

    
    
        
            
            %d{HH:mm:ss} [%X{RequestId}] %-5level %logger{50}:%line - %msg%n
            UTF-8
        
    


    
    
        
        
            
            
                ${LOG_HOME}/%d{yyyy-MM}/%d{yyyy-MM-dd}.log
            
            
            30
            
            5GB
        
        
            
            100MB
        
        
            
                
                %d{HH:mm:ss} [%X{RequestId}] %-5level %logger{50}:%line - %msg%n
                UTF-8
            
        
    

    
        http://elasticsearch.y8zh.com/_bulk
        logback-${SPRING_PROFILES_ACTIVE}-${SPRING_APPLICATION_NAME}-%date{yyyy-MM}
        app-log

        es-error-logger 
        30000 
        false 
        false 
        false 
        104857600 
        3 
        30000 
        250 
        false 
        false 
        1000 
         
        
            
                host
                ${HOSTNAME}
                false
            
            
                route
                %X{Route}
                false
            
            
                method
                %X{Method}
                false
            
            
                httpCode
                %X{HttpCode}
                false
            
            
                requestId
                %X{RequestId}
                false
            
            
                requestIp
                %X{RequestIp}
                false
            
            
                severity
                %level
            
            
                stacktrace
                %ex
            
            
                logger
                %logger:%line
            
        
        
            
Content-Type application/json
测试代码日志输出
@Slf4j
@RestController
@RequestMapping({"/"})
public class ControllerTest {

    @GetMapping("log")
    public String log(){
        log.info("===>loglogloglog");
        return "sss";
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/847946.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号