Ruby脚本运行产生的错误/异常日志默认存储位置在哪里?
Ruby 脚本异常日志位置排查方法
默认运行机制说明
- Ruby 脚本未捕获的异常默认仅输出到标准错误流(stderr),不会自动持久化写入本地日志文件。如果直接在终端前台运行脚本,异常只会打印在当前终端界面,不会主动存储到本地文件。
不同运行场景的日志定位方式
- 前台终端直接运行:无持久化日志,异常仅输出在当前终端窗口,关闭终端后内容无法回溯
- 后台/托管场景运行:
- 若使用
nohup ruby 脚本名.rb &类命令后台启动,日志默认写入执行命令所在目录的nohup.out文件 - 若使用systemd等系统服务管理工具托管脚本,执行
journalctl -u 你的服务名.service即可查看对应输出日志 - 若手动配置过输出重定向,比如执行命令为
ruby script.rb > run.log 2>&1,日志会写入你指定的run.log文件中
- 若使用
主动配置持久化日志方案
如果需要后续方便排查问题,可直接引入Ruby标准库自带的logger模块,自定义日志存储路径,参考实现如下:
require 'logger' # 自定义日志存储路径,路径下文件不存在时会自动创建 logger = Logger.new('./ruby_script_err.log') logger.level = Logger::INFO begin # 此处放置你的业务逻辑代码 rescue => e # 捕获异常后同时写入日志,包含完整异常栈信息 logger.error "运行异常:#{e.class} - #{e.message}" logger.error "异常栈:\n#{e.backtrace.join("\n")}" # 可选配置:异常依然抛出到终端输出 raise e end
内容的提问来源于stack exchange,提问作者opensource-developer
相关产品推荐
相关产品推荐

