logger 手动写日志
logger 属于 util-linux,把一条自定义消息按系统日志协议投递给本机日志服务,或者在指定远端时直接发往远端收集器。它有两个高价值用法:测试日志链路是否通畅,以及在变更操作前后打一条带标签的标记,让排查时能在时间线上直接定位变更点。
基本信息
| 适用平台 | Linux(util-linux) |
|---|---|
| 语法 | logger [选项] 消息 |
| 常用选项 | -t 标签、-p 设施与级别、-n 远端主机、-P 端口、-s 同时输出到标准错误 |
| 默认行为 | 发往本机日志服务,使用默认设施与级别 |
典型使用场景
- 变更前后各打一条标记,排查时快速定位变更发生的时刻
- 验证远端日志收集链路是否真的收到数据
- 在脚本里输出结构化状态,让日志与业务记录在同一时间线上
- 模拟某个级别的日志,验证告警规则是否会被触发
- 排查日志分流配置时,用不同设施发送测试消息
常用示例
常用示例
logger -t deploy 'release v1.2.3 started' # 带标签写入本机日志
logger -p local0.err -t myapp 'disk quota exceeded' # 指定设施与级别
logger -n 10.0.0.9 -P 514 -t probe 'test to remote syslog' # 测试远端收集器
logger -s -t maint 'begin maintenance window' # 同时输出到屏幕
journalctl -t deploy -n 5 # 按标签回查(systemd 系统)
grep 'deploy' /var/log/messages | tail -5 # 传统日志文件回查参数与级别读法
| 参数 | 含义 | 说明 |
|---|---|---|
| -t | 消息标签 | 显示为消息来源标识,便于过滤 |
| -p | 设施与级别 | 写成设施.级别两部分 |
| -n 与 -P | 远端主机与端口 | 用来测试远端收集器是否可达 |
| -s | 同时写到标准错误 | 交互确认时避免还要去翻日志 |
| 级别序号 | 从紧急到调试依次降低 | 级别名写错会被当作无效值处理 |
做变更时用带标签的方式打一条标记,排查时就能在系统日志时间线上直接定位变更发生点,比事后对时间戳省事得多。
使用要点
- 测试远端收集链路时,同时在对端确认是否收到
- 标签尽量唯一且可搜索,避免与常见关键词冲突
- 不同设施会被分流到不同日志文件,选择前先确认收集端配置
- 脚本里把关键状态写成固定格式,便于后续用脚本提取
- 不要把口令或敏感数据写进日志消息
发送到远端时默认走简单传输,链路不通时消息可能被静默丢弃;用它做链路测试要同时在接收端确认,而不是只看命令是否报错。