README.MD
logback 推送控制台日志至web页面
基于Filter方式,在日志输出至控制台前,LoggerFitler 拦截日志通过websocket 推送至前台页面
logback 配置如下
在appender中指定filter 拦截
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%magenta(%d{yyyy-MM-dd HH:mm:ss.SSS}) %highlight(%-5level) %green([%thread]) %logger{40}: %m %n
</pattern>
<charset>utf8</charset>
</encoder>
<filter class="com.weblog.logger.LoggerFilter"></filter>
</appender>
<root level="info">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
实现原理
LoggerFilter采集日志添加至LoggerQueue队列, LoggerConsumer 从LoggerQueue中采集推送至前台页面
graph LR
LoggerFilter--push--> LoggerQueue
LoggerConsumer--pull--> LoggerQueue
LoggerConsumer--socket--> wsLog.html
测试代码
1s 写入1条info日志,2s 写入1条warn 日志
@Scheduled(fixedDelay = 1000)
private void mockLogInfoData() {
logger.info("logger info data!");
}
@Scheduled(fixedDelay = 2000)
private void mockLogWarnData() {
logger.warn("logger warn data!");
}