序
前段时间快马加鞭的把2个项目的需求弄完了,一个说是做了就验收,一个是支持期,要提高客户友好体验。完了后,这2天有点小闲暇,不能浪费,于是就逛逛论坛,发现了一个轻量级的日志增强框架TLog,觉得很nice,于是就试试,看香不香。
这个springBoot也可以用,但是感觉用处不大,真正有用处的场景我认为是springCloud里用,可以查看各层级日志,也就调用链路。这个我这里也是因为受限服务器资源、人力资源等,所以觉得这个于我最实在。
二、依赖引入我这里是springCloud项目,且是maven的主从项目,所以我直接在主pom.xml全依赖引入。
com.yomahub tlog-all-spring-boot-starter 1.3.3
目前最新版本是1.3.3,有在线接入文档,地址:https://yomahub.com/tlog/docs/
文档写的还是非常不错的,逻辑清晰,节奏连贯。
${CONSOLE_LOG_PATTERN} utf8 ${app.name} >> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n ${log.path}/sys-info.log ${log.path}/sys-info-%d{yyyy-MM-dd}.log ${log.save.time.day} ${app.name} >> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n ${log.path}/sys-error.log ${log.path}/sys-error.%d{yyyy-MM-dd}.log ${log.save.time.day} ERROR ACCEPT DENY
里面我是按照接入文档修改的encoder的class为com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder,没错就是这么简单。
需要打印上层服务名称、ip,需要增加配置
tlog.pattern=[
p
r
e
A
p
p
]
[
preApp][
preApp][preIp][
s
p
a
n
I
d
]
[
spanId][
spanId][traceId]
集成文档有写,我这里有一个公用配置,每个模块都要引入,所以在公用配置增加:
#TLog轻量级日志追踪 tlog: pattern: '[$preApp][$preIp][$spanId][$traceId]'四、启动类修改
启动类main方法外增加
//进行日志增强,自动判断日志框架
static {
AspectLogEnhance.enhance();
}
PS:这里现在是不用增加的了,会自动适配的。真正做到了对代码0侵入。
五、特别注意第一次试验集成是没有成功的,找到组织后问到作者,作者回复的。其实接入文档也有些,怪自己没有仔细看。
我的webMvcConfig类是继承的WebMvcConfigurationSupport类,改成实现WebMvcConfigurer后就正常了。
这里启动springcloud的几个服务,做验证。
如果日志增强启动成功,会有这样一句日志打印。
调用链路效果:
这里的请求是gateway(网关) -> web(接口层) -> service(服务层)
gateway网关层:
web接口层:
service服务层:
看到上层服务名称、ip了吧?这里贯穿的traceID、spanID也都看到了,可以看到一个请求从网关层到服务层,经过的各模块,traceID是一致的,这样追踪日志是不是超级简单,再也不用靠请求时间、双眼去盯着了…
作为受限不能引入zpikin、Sleuth链路追踪的,用这个也是一种选择。运维、日志分析也基本可以满足。另外TLog也是开放了一些api的,应该也是可以从log对象取出traceID、spanId做一些简单的业务埋点。就分享到这里,感兴趣的可以自行code研究。另外说下,组织有微信群,作者很友好。



