日志服务相关

最近更新时间: 2024-10-17 17:10:00

为什么无法显示 stdout 日志?

对于使用容器部署的应用,在下述两种情况下 TSF 会采集 stdout 日志:

  • 业务容器启动服务进程时不重定向 stdout 此时可以登录上容器所在的机器,通过kubectl logs或者docker logs观察程序自身有无输出 stdout

  • 业务容器启动服务进程时将 stdout 重定向到/data/tsf_std/stdout/logs/sys_log.log 此时可以登录上容器所在的机器,通过kubectl exec或者docker exec进入到容器中,观察上述sys_log.log文件有无内容。

为什么无法显示自定义的文件日志?

  1. 检查日志配置项中的日志采集规则
  • 确认日志配置项中的日志路径和应用程序在配置文件中的日志路径相同。

  • 确认日志配置项中的日志解析格式和应用程序在配置文件中的日志解析格式相同。例如,如果日志配置项为默认日志配置项(Spring Boot 日志格式),而应用程序实际使用 logback 和自定义的日志 pattern,那么 TSF 无法采集日志。用户需要创建一个 logback 格式的日志配置项,然后关联到部署组。

  1. 在日志配置项的详情页中,查看日志配置项是否已经发布到对应的部署组中。

  2. 日志配置项修改后,虚拟机部署的应用会自动使用修改后的日志配置项来采集日志,容器部署的应用需要重启部署组(先停止部署组,再启动部署组)后才会使用修改后的日志配置项来采集日志。

  3. 如果容器镜像的时区不对,则无法检索到日志,需要在 Dockerfile 中调整时区。

# GMT+8 for CentOS
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone

为什么实时日志一直加载不出来?

  1. 请确认日志配置项已正确配置。

  2. 实时日志会有15s时延,即显示从15秒前开始打印的日志。如果一直在加载中,可以确认下最近15s有没有日志打印,如果没有则会一直到有新的日志打印才会显示。

能否关掉 tsf-task-schedule-xxx 线程或者日志?

这个名称的线程都是 TSF SDK 的 schedule 线程,关闭后会导致部分数据同步功能不正常(如服务治理、配置等)。 如果不需要看到日志,可以将对 package 或 class 的日志级别调高即可。