日志打印频繁的问题
在老的 Nacos 版本中,往往会有大量的无效日志打印,这些日志的打印会迅速占用完用户的磁盘空间,同时也让有效日志难以查找。目前社区反馈的日志频繁打印主要有以下几种情况:
access日志大量打印
相关issue有:https://github.com/alibaba/nacos/issues/1510。主要表现是 {nacos.home}/logs/access_log.2019-xx-xx.log 类似格式文件名的日志大量打印,而且还不能自动清理和滚动。这个日志是 Spring Boot 提供的 tomcat 访问日志打印,Spring Boot 在关于该日志的选项中,没有最大保留天数或者日志大小控制的选项。因此这个日志的清理必须由应用新建 crontab 任务来完成,或者通过以下命令关闭日志的输出(在生产环境我们还是建议开启该日志,以便能够有第一现场的访问记录):
server.tomcat.accesslog.enabled=false
服务端
业务日志大量打印且无法动态调整日志级别。这个问题在1.1.3已经得到优化,可以通过API的方式来进行日志级别的调整,调整日志级别的方式如下,其中,$nacos_server 是你自己的 nacos 地址,如果在本机就是 http://127.0.0.1,ns 代表 name server,cs 代表 config server,而 logName 是输出的日志文件的名字去掉后缀,微微有点坑的是接口路径竟然不是统一的,name server 后面是 operator,config server 是 ops:
# 调整naming模块的naming-raft.log的级别为error:
curl -X PUT '$nacos_server:8848/nacos/v1/ns/operator/log?logName=naming-raft&logLevel=error'
# 调整config模块的config-dump.log的级别为warn:
curl -X PUT '$nacos_server:8848/nacos/v1/cs/ops/log?logName=config-dump&logLevel=warn'
客户端
日志大量打印,主要有心跳日志、轮询日志等。这个问题已经在1.1.3解决,请升级到1.1.3版本。
- 项目中增加相应的日志级别来控制
# 日志级别,可以指定到具体类
logging:
level:
com.alibaba.nacos: warn
- JVM 启动参数
参数名 | 含义 | 可选值 | 默认值 | 支持版本 |
---|---|---|---|---|
com.alibaba.nacos.naming.log.level(-D) | Naming客户端的日志级别 | info,error,warn等 | info | >= 1.0.0 |
com.alibaba.nacos.config.log.level(-D) | Config客户端的日志级别 | info,error,warn等 | info | >= 1.0.0 |
参考资料:
Nacos FAQ
Nacos 系统参数介绍