
如何正确清理 Docker 容器的日志?
Docker 容器日志在 /var/lib/docker/containers/<id>/<id>-json.log,不能直接 rm(文件被占用)——用 truncate -s 0 清空,或配置 log-opts 轮转从根本解决。
聚焦概念、架构、排障、价格与选型,一篇解决一个明确问题。

Docker 容器日志在 /var/lib/docker/containers/<id>/<id>-json.log,不能直接 rm(文件被占用)——用 truncate -s 0 清空,或配置 log-opts 轮转从根本解决。

Go 日志加颜色的三种方式:手写 ANSI 转义码(\033[31m)、用 logrus/charmbracelet/log 等库的彩色 handler、slog 第三方 handler。本文给出三种实现。

Python 日志加颜色:colorlog 库一行配置即彩色输出,或自定义 Formatter 插入 ANSI 转义码。注意仅终端启用、写文件时禁用。本文给出两种实现。

合并列表:+ 运算符创建新列表;extend() 就地追加;[*a, *b] 解包语法;itertools.chain 惰性拼接。本文给出四种方式与性能差异。

通过 rsyslog 的 programname 过滤规则,把指定应用的日志路由到独立文件。本文给出完整配置步骤、权限设置与重载方法,并介绍如何用观测云 DataKit 统一采集这些文件。
![Node.js 中 console.log 打印对象时显示 [Object],如何看到完整内容? cover](/learn/images/learn-covers/context-deadline-exceeded-prometheus.jpg)
Node.js 的 console.log 对深层对象只显示 [Object]。本文介绍 util.inspect 的 depth 选项、JSON.stringify 以及 console.dir 三种方法,完整打印嵌套对象。

Python 整数转字符串最常用的方法是 str(),也可以用 f-string、format() 等方法。本文对比各种写法及其适用场景。

Python 复制文件用标准库 shutil:copy() 复制内容和权限,copy2() 额外保留时间戳等元数据,copytree() 递归复制整个目录。本文对比各方法差异。

通过 rsyslog 的 imfile 模块可以采集普通文本日志文件并打进 syslog 管道。本文给出 RainerScript 风格的完整配置、状态文件说明及排错要点,并对比观测云 DataKit 的文件日志采集方案。

Python 实现延时最常用的方法是 time.sleep()。本文介绍 sleep、异步 asyncio.sleep、以及忙等待方案的区别,并说明各自适用场景。

Logstash 通过在 output 中用条件判断和索引名变量实现多索引输出。本文给出按日志类型分流到不同索引的完整配置示例,并介绍观测云的多索引方案。

Python 创建嵌套目录推荐 pathlib 的 mkdir(parents=True, exist_ok=True),不会逐级报错也不会因目录已存在而抛异常。本文对比 pathlib 与 os.makedirs 的用法。