可观测学堂

可观测问答

聚焦概念、架构、排障、价格与选型,一篇解决一个明确问题。

Ruby 中如何同时把日志输出到文件和控制台? cover
概念指南

Ruby 中如何同时把日志输出到文件和控制台?

Ruby 同时输出到文件和控制台:创建两个 Logger 实例分别输出,或封装一个多路 Logger 类统一调用。本文给出两种实现方案。

Python 中如何把日志输出到标准输出(stdout)? cover
概念指南

Python 中如何把日志输出到标准输出(stdout)?

Python logging 默认输出到 stderr。输出到 stdout 需要显式创建 StreamHandler(sys.stdout)。本文介绍配置方法及容器环境的最佳实践。

C# 中如何记录未捕获的异常? cover
概念指南

C# 中如何记录未捕获的异常?

C# 记录未捕获异常:订阅 AppDomain.UnhandledException 事件记录全局异常,TaskScheduler.UnobservedTaskException 处理异步任务异常。本文给出完整实现。

Java 中如何记录未捕获的异常? cover
概念指南

Java 中如何记录未捕获的异常?

Java 记录未捕获异常:实现 Thread.UncaughtExceptionHandler 接口并设为默认处理器,所有未被 try-catch 捕获的异常都会触发记录。本文给出完整实现。

Python 中如何记录未捕获的异常? cover
概念指南

Python 中如何记录未捕获的异常?

Python 记录未捕获异常:设置 sys.excepthook 自定义全局异常处理器,将异常信息写入日志。threading.excepthook 处理子线程异常。本文给出完整实现。

如何阻止 systemd 自动重启 rsyslog 服务? cover
概念指南

如何阻止 systemd 自动重启 rsyslog 服务?

systemd 默认会在 rsyslog 崩溃后自动重启。通过 systemctl edit 创建覆盖配置,修改 Restart 策略即可控制。本文给出具体操作步骤。

Python 中如何测量代码执行花费的时间? cover
概念指南

Python 中如何测量代码执行花费的时间?

Python 测量耗时:time.perf_counter() 精确(推荐)、time.time() 简单、time.monotonic() 单调。本文对比各计时函数的差异和适用场景。

Python 中如何在字符串前面补零? cover
概念指南

Python 中如何在字符串前面补零?

Python 字符串补零用 zfill() 方法:'123'.zfill(5) 得到 '00123'。也可用 f-string 格式化 f"{n:05d}"。本文对比各方法。

如何解析 Apache 日志(提取字段做分析)? cover
概念指南

如何解析 Apache 日志(提取字段做分析)?

解析 Apache 访问日志的方法:命令行工具(awk/grep/sed)快速提取、Python/Go 脚本批量分析、日志平台自动解析。本文对比各种方案。

如何解析 Nginx 日志(提取字段做分析)? cover
概念指南

如何解析 Nginx 日志(提取字段做分析)?

解析 Nginx 访问日志的方法:awk/grep 命令行快速分析、Python 脚本批量处理、日志平台自动解析。本文对比各种方案及常用分析命令。

Python 中函数参数是值传递还是引用传递? cover
概念指南

Python 中函数参数是值传递还是引用传递?

Python 的参数传递是"对象引用传递":可变对象(列表/字典)在函数内修改会影响外部,不可变对象(数字/字符串)不会。本文详解原理和注意事项。

Fluent Bit 的 tail 输入插件丢失日志行怎么办? cover
概念指南

Fluent Bit 的 tail 输入插件丢失日志行怎么办?

Fluent Bit tail 插件漏读日志行通常是因为没有用 inotify 监听文件变化。开启 Inotify_Watcher On 即可实时捕获新行。本文说明原因和配置。