Schema Registry GET日志重复记录至/var/log目录的问题咨询
Schema Registry 日志问题解答
日志生成主体与类型
- 这些
/var/log/messages下的日志由Linux系统的syslog服务生成,但日志内容本身是Schema Registry的REST请求日志。 - 原因:Schema Registry通过bash脚本启动时,其stdout/stderr输出未被完全重定向到log4j配置的日志文件,导致这些输出被syslog捕获并写入
/var/log/messages(及分割后的归档文件)。日志中的bash:前缀也证明了这是bash进程的输出被系统日志服务记录。 - 日志类型:属于Schema Registry的请求日志(内容对应
io.confluent.rest-utils.requests组件的INFO级日志,记录REST API调用详情),并非系统网络日志。
停止或配置存储路径的方法
方法1:修正Schema Registry启动脚本的输出重定向
找到Schema Registry的启动脚本(通常在/confluent-7.0.1/bin/schema-registry-start),确保启动命令将stdout和stderr重定向到指定日志文件或/dev/null:
# 修改启动命令,添加输出重定向 ./schema-registry-start ./etc/schema-registry/schema-registry.properties >> ${schema-registry.log.dir}/schema-registry.log 2>&1
这样Schema Registry的所有输出都会进入log4j配置的文件,syslog就不会再捕获这些内容。
方法2:修改syslog配置过滤或重定向日志
如果不想修改启动脚本,可以配置syslog(如rsyslog)来处理这些日志:
- 编辑rsyslog配置文件(通常是
/etc/rsyslog.conf或/etc/rsyslog.d/*.conf) - 添加规则过滤或重定向:
- 过滤掉这类日志:
:msg, contains, "io.confluent.rest-utils.requests" ~ - 或重定向到自定义路径:
:msg, contains, "io.confluent.rest-utils.requests" /var/log/schema-registry-rest.log & stop
- 过滤掉这类日志:
- 重启rsyslog服务:
systemctl restart rsyslog
方法3:完善log4j配置确保日志全量写入指定文件
检查Schema Registry的log4j配置文件(通常在/confluent-7.0.1/etc/schema-registry/log4j.properties),确保包含io.confluent.rest-utils.requests的日志配置:
log4j.logger.io.confluent.rest-utils.requests=INFO, file log4j.additivity.io.confluent.rest-utils.requests=false
additivity=false会阻止这些日志同时输出到stdout,确保只写入log4j配置的文件。
内容的提问来源于stack exchange,提问作者Bünyamin Şentürk
相关产品推荐
相关产品推荐

