可观测学堂

可观测问答

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

Pytest 如何给 Fixture 传递参数? cover
概念指南

Pytest 如何给 Fixture 传递参数?

Pytest 给 fixture 传参的三种方式:@pytest.fixture(params=[...]) 参数化、间接参数化 @pytest.mark.parametrize 加 indirect=True、以及 request…

Python 如何记录带堆栈跟踪(Stack Trace)的错误日志? cover
概念指南

Python 如何记录带堆栈跟踪(Stack Trace)的错误日志?

记录完整异常堆栈:except 块中用 logging.exception() 或 logger.error(..., exc_info=True);未捕获异常用 sys.excepthook 兜底。本文给出标准写法与最佳实践。

Python 如何读取环境变量? cover
概念指南

Python 如何读取环境变量?

os.environ['VAR'] 直接读取(不存在抛 KeyError);os.environ.get('VAR', '默认值') 更安全;os.getenv() 等价。本文给出用法、默认值、类型转换与 .env 文件方案。

Python 的 for 循环中如何同时获取索引和元素? cover
概念指南

Python 的 for 循环中如何同时获取索引和元素?

用 enumerate():for i, item in enumerate(items) 同时拿到下标与元素,start 参数可改起始值。避免 range(len()) 的写法。本文给出示例与常见变体。

Redis 的日志文件在哪里?如何查看? cover
概念指南

Redis 的日志文件在哪里?如何查看?

Redis 日志位置由配置文件 logfile 指令决定:默认可能为空(输出到 stdout)或 /var/log/redis/redis-server.log。容器环境用 docker logs。本文给出定位与修改方法。

Python 字典如何添加新键? cover
概念指南

Python 字典如何添加新键?

直接赋值:d['key'] = value;批量添加用 update();仅当键不存在时添加用 setdefault()。本文给出三种方式与注意事项。

Logstash 采集文件时如何把文件名加为字段? cover
概念指南

Logstash 采集文件时如何把文件名加为字段?

Logstash file input 自带 path 字段(完整路径),用 grok 从 path 提取文件名段即可得到文件名字段。本文给出 grok 模式与多目录场景的用法。

Python 如何追加内容到文件? cover
概念指南

Python 如何追加内容到文件?

open('file', 'a') 以追加模式打开,write() 写入不覆盖原内容;'a+' 可同时读。with 语句自动关文件。本文给出示例与模式对照。

Pytest 如何断言浮点数近似相等(assertAlmostEqual)? cover
概念指南

Pytest 如何断言浮点数近似相等(assertAlmostEqual)?

浮点数断言用 pytest.approx:assert result == pytest.approx(3.14, rel=1e-3)。支持绝对/相对误差、列表与字典。不要用 == 直接比浮点数。本文给出用法与误差参数。

Pytest 如何断言代码抛出了指定异常? cover
概念指南

Pytest 如何断言代码抛出了指定异常?

用 pytest.raises 上下文管理器:with pytest.raises(ValueError): 调用代码。可配合 match 参数校验异常消息文本。本文给出完整示例与进阶用法。

Logstash 如何自动重载(Auto-Reload)配置? cover
概念指南

Logstash 如何自动重载(Auto-Reload)配置?

Logstash 启动加 --config.reload.automatic 即开启配置热重载,--config.reload.interval 控制检查间隔(默认 3 秒)。

Ruby 中如何修改日志级别(Logger)? cover
概念指南

Ruby 中如何修改日志级别(Logger)?

Ruby Logger 通过 logger.level = Logger::DEBUG 等常量设置级别;Rails 用 config.log_level。本文给出 Logger 级别表、动态调整与 Rails 配置方法。