在 Ruby 中将错误写入日志文件

Write Errors to Log File in Ruby

我正在尝试捕获错误,检查 /tmp 目录,然后将错误写入该目录中的日志文件,目前我得到:

.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/fileutils.rb:252:in `mkdir': Permission denied @ dir_s_mkdir - /temp

这是我的代码:

require 'logger'
require 'tmpdir'

temp = Dir.tmpdir()
log = Logger.new File.open("#{temp}/error.log", 'w')
log.level = Logger::INFO

begin

rescue StandardError => e
   log.error "Error - #{e}"
   puts "For detailed error messages, see: #{temp}/error.log"
end

我认为这个错误是因为我试图做一些我没有权限做的事情,我不明白是否有一种干净的方法来实现我正在尝试的事情?提前感谢您在此问题上花费的时间。

我已经用我更新的代码编辑了它来回答我的问题。感谢您的所有输入。

  1. 您不应创建 /tmp 目录 - 此目录始终存在。
  2. 您应该将 begin 放在检查代码上方,而不是下方。
    require 'logger'
    require 'fileutils'

    begin
      log = Logger.new File.open('/tmp/error.log', 'w')
      log.level = Logger::INFO  
    rescue StandardError => e
      puts "Error - #{e}"
    end

使其工作并与 Windows 兼容:

require 'logger'
require 'tmpdir'

tmp = Dir.mktmpdir
log = Logger.new File.open(File.join(tmp, 'error.log', 'w')
log.level = Logger::INFO

begin
  # your code here
rescue StandardError => e
  log.error "Error - #{e}"
  puts "For detailed error messages, see the file: /temp/error.log"
end