EMQX—日志与追踪

Posted 敲代码的小小酥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EMQX—日志与追踪相关的知识,希望对你有一定的参考价值。

前言

无论任何服务,我们都有必要研究其日志系统,通过日志系统,我们可以有效了解服务运行情况和服务出现问题后的追踪。下面我们讲解EMQX服务的日志功能。日志的基础功能这里不一一赘述,可在官网或我上传的资料里进行查看,这里只记录EMQX提供的特有或新颖的日志功能。

1.控制日志输出

EMQ X 支持将日志输出到控制台或者日志文件,或者同时使用两者。可在 emqx.conf 中配置 :
log.to 默认值是 both,可选的值为:
off: 完全关闭日志功能
file: 仅将日志输出到文件
console: 仅将日志输出到标准输出(emqx 控制台)
both: 同时将日志输出到文件和标准输出(emqx 控制台)

2.日志级别

EMQ X 的日志分 8 个等级, 由低到高分别为:

debug < info < notice < warning < error < critical < alert < emergency

EMQ X 的默认日志级别为 warning,可在 emqx.conf 中修改:

log.level = warning

此配置将所有 log handler 的配置设置为 warning。

3.日志文件和日志滚动

EMQ X 的默认日志文件目录在 ./log (zip包解压安装) 或者 /var/log/emqx (二进制包安装)。可在emqx.conf 中配置:

log.dir = log

在文件日志启用的情况下 (log.to = file 或 both),日志目录下会有如下几种文件:
emqx.log.N: 以 emqx.log 为前缀的文件为日志文件,包含了 EMQ X 的所有日志消息。比如
emqx.log.1 , emqx.log.2 …
emqx.log.siz 和 emqx.log.idx: 用于记录日志滚动信息的系统文件。
run_erl.log: 以 emqx start 方式后台启动 EMQ X 时,用于记录启动信息的系统文件。
erlang.log.N: 以 erlang.log 为前缀的文件为日志文件,是以 emqx start 方式后台启动 EMQ X 时,控
制台日志的副本文件。比如 erlang.log.1 , erlang.log.2 …
可在 emqx.conf 中修改日志文件的前缀,默认为 emqx.log :

log.file = emqx.log

EMQ X 默认在单日志文件超过 10MB 的情况下,滚动日志文件,最多可有 5 个日志文件:第 1 个日志文件为emqx.log.1,第 2 个为 emqx.log.2,并以此类推。当最后一个日志文件也写满 10MB 的时候,将从序号最小的日
志的文件开始覆盖。文件大小限制和最大日志文件个数可在 emqx.conf 中修改:

log.rotation.size = 10MB log.rotation.count = 5

4.针对日志级别输出日志文件

如果想把大于或等于某个级别的日志写入到单独的文件,可以在 emqx.conf 中配置 log…file : 将 info 及info 以上的日志单独输出到 info.log.N 文件中:

log.info.file = info.log

将 error 及 error 以上的日志单独输出到 error.log.N 文件中

log.error.file = error.log

5. 运行时修改日志级别

在运行时,可以修改EMQX的日志级别,具体的修改方式看课件,这里只需知道有这个日志特性。

6. 日志追踪

EMQ X 支持针对 ClientID 或 Topic 过滤日志并输出到文件。在使用日志追踪功能之前,必须将 primary log level 设置为 debug。所谓的日志追踪就是将日志筛选出来,单独输出到一个文件中。具体的配置看可见。

以上是关于EMQX—日志与追踪的主要内容,如果未能解决你的问题,请参考以下文章

网络溯源追踪系统的日志管理与运行维护?

浅议分布式链路追踪与日志的整合

浅议分布式链路追踪与日志的整合

浅议分布式链路追踪与日志的整合

Python 日志记录与程序流追踪(基础篇)

Dubbo日志链路追踪TraceId选型