标准答案
- 应用应区分正常日志和错误日志,并输出结构化字段、时间和请求关联信息。
- 容器日志驱动或采集器负责转发、保留和检索,但也必须设置大小、轮转和失败时的背压策略。
- 如果应用必须写文件,要明确 volume、轮转、重开文件、权限和采集方式,不能默认容器删除后日志仍存在。
- 日志中不得输出 token、密码和完整敏感请求,异常堆栈也要按数据分类和访问权限管理。
题目解析
stdout/stderr 让容器运行时和采集器能够统一添加容器、实例和时间元数据,避免应用自己管理文件轮转和 inode。但它只是输出入口,日志驱动仍可能阻塞、丢弃或占满节点磁盘,因此要设置大小、轮转、采样、背压和保留策略。
结构化日志应记录 request ID、错误类型和耗时等诊断字段,敏感请求体、token 和个人数据按白名单处理。若必须写文件,要明确 volume、reopen、权限和采集方式,并验证采集失败时应用不会无限增长本地数据。
常见误区
- 误区:把所有请求体原样打日志。改正:按字段白名单、掩码和采样记录,默认不写秘密和完整个人数据。
- 误区:在容器内无限写日志文件。改正:优先 stdout/stderr,或配置轮转、容量上限、采集和清理。
- 误区:不限制采集失败时的磁盘增长。改正:设置运行时日志上限和告警,定义采集不可用时的降级策略。