spring-boot下使用LogBack,使用HTTP协议将日志推送到日志服务器(二)

上文中,我们实现了将LogBack的日志信息实时的推送到日志服务器的功能。但实时进行推送,必然会增加日志服务器的压力。本文将阐述另一种定时推送的方法,以减轻日志服务器的压力。

目标:每10秒钟统一推送这期间产生的日志

示例代码地址

https://github.com/mengyunzhi/springBootSampleCode/tree/master/log-back
开发环境: java1.8 + spring-boot:2.1.2

定义application.properties

为了与官方文档更加统一,在此,我们如下定义application.properties

# URL
logback.loggly.endpointUrl=http://localhost:8081/log

配置logback-spring.xml




    
    

    
    

    
    

    
    

    
    

    
    
        
        ${logback.loggly.endpointUrl}
        
        
        
        
            
                true
            
            yyyy-MM-dd' 'HH:mm:ss.SSS
        
    

    
    
        ${logback.loggly.endpointUrl}
        10
        
        
            
                true
            
        
    

    
    
        
        

        
        

        
        

        
        
    

主要变更信息如下:

  • 为了更好的和官方同步,将变量名称由logUrl变更为:logback.loggly.endpointUrl
  • 引用了新的变量信息: logback.loggly.endpointUrl
  • 加了新的appender -> batchHttp

启动测试

启动service子模块,启动本项目。打开浏览器,并访问:http://localhost:8080/send

发送方日志:

2019-03-25 15:29:02.093  INFO 28934 --- [nio-8080-exec-6] c.m.sample.logback.LogBackApplication    : info
2019-03-25 15:29:02.093  WARN 28934 --- [nio-8080-exec-6] c.m.sample.logback.LogBackApplication    : warn
2019-03-25 15:29:02.093 ERROR 28934 --- [nio-8080-exec-6] c.m.sample.logback.LogBackApplication    : error
2019-03-25 15:29:11.564  INFO 28934 --- [nio-8080-exec-8] c.m.sample.logback.LogBackApplication    : info
2019-03-25 15:29:11.565  WARN 28934 --- [nio-8080-exec-8] c.m.sample.logback.LogBackApplication    : warn
2019-03-25 15:29:11.565 ERROR 28934 --- [nio-8080-exec-8] c.m.sample.logback.LogBackApplication    : error

挡收方日志

2019-03-25 15:29:08.286  INFO 28428 --- [nio-8081-exec-9] c.m.s.l.service.ServiceApplication       : {  "timestamp" : "1553498942093",  "level" : "INFO",  "thread" : "http-nio-8080-exec-6",  "logger" : "com.mengyunzhi.sample.logback.LogBackApplication",  "message" : "info",  "context" : "default"}{  "timestamp" : "1553498942093",  "level" : "WARN",  "thread" : "http-nio-8080-exec-6",  "logger" : "com.mengyunzhi.sample.logback.LogBackApplication",  "message" : "warn",  "context" : "default"}{  "timestamp" : "1553498942093",  "level" : "ERROR",  "thread" : "http-nio-8080-exec-6",  "logger" : "com.mengyunzhi.sample.logback.LogBackApplication",  "message" : "error",  "context" : "default"}
2019-03-25 15:29:18.289  INFO 28428 --- [nio-8081-exec-1] c.m.s.l.service.ServiceApplication       : {  "timestamp" : "1553498951564",  "level" : "INFO",  "thread" : "http-nio-8080-exec-8",  "logger" : "com.mengyunzhi.sample.logback.LogBackApplication",  "message" : "info",  "context" : "default"}{  "timestamp" : "1553498951565",  "level" : "WARN",  "thread" : "http-nio-8080-exec-8",  "logger" : "com.mengyunzhi.sample.logback.LogBackApplication",  "message" : "warn",  "context" : "default"}{  "timestamp" : "1553498951565",  "level" : "ERROR",  "thread" : "http-nio-8080-exec-8",  "logger" : "com.mengyunzhi.sample.logback.LogBackApplication",  "message" : "error",  "context" : "default"}

我们发现:
发送方于29分02秒时,生成了3条日志;接收方于29分08秒接收到了1条日志,该日志包括了上面3条日志信息。
发送方于29分11秒时,生成了3条日志;接收方于29分18秒(距离上次接收的间隔为10秒)接收到了第2条日志,该日志包括了29分11秒时生成的3条日志信息。

总结

对于小白级别的我们而言,我们想到的,别人其实早就实现了。所以大多数的我们,最终比接是DEBUG的能力、看文档的能力、对软件工程理解的能力、对业务的掌控能力。而编码能力,则是基本功,没有它不行,只有它也不行。

参考文档:https://github.com/qos-ch/logback-extensions/wiki/Loggly

你可能感兴趣的:(logback,springboot)