基于Launchd的日志配置:如何让log show读取应用日志
macOS下修改launchd配置将应用日志接入系统日志
一、修改launchd配置文件
你当前的配置是把日志写入本地平面文件,要让日志能被log show捕获,只需要移除StandardOutPath和StandardErrorPath这两个键值对。
原配置中的:
<key>StandardOutPath</key> <string>/var/app/s.log</string> <key>StandardErrorPath</key> <string>/var/app/e.log</string>
直接删除这四段即可。
launchd默认会将托管进程的标准输出(stdout)和标准错误(stderr)转发到macOS的统一日志系统(Unified Logging System),这样log show就能读取到这些日志。
修改完成后,需要重新加载你的launchd配置使更改生效:
# 先卸载原有配置 launchctl unload /path/to/your/app.plist # 重新加载更新后的配置 launchctl load /path/to/your/app.plist
二、log show读取日志的路径说明
macOS统一日志系统的日志数据存储在**/private/var/db/diagnostics/**目录下,里面包含.logarchive格式的归档日志文件、实时日志缓存以及相关的索引数据库。这些文件是二进制格式,无法直接用文本编辑器查看,必须通过log系列命令(如log show、log stream)来解析和读取。
三、高效过滤日志的技巧
比起用grep,推荐使用log show自带的谓词过滤,性能更优且更精准:
log show --debug --info --predicate 'process == "Myapp"'
如果你的应用有自定义的服务标识,也可以用sender字段过滤:
log show --debug --info --predicate 'sender == "com.yourcompany.Myapp"'
内容的提问来源于stack exchange,提问作者James Franco
相关产品推荐
相关产品推荐

