在 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
我认为这个错误是因为我试图做一些我没有权限做的事情,我不明白是否有一种干净的方法来实现我正在尝试的事情?提前感谢您在此问题上花费的时间。
我已经用我更新的代码编辑了它来回答我的问题。感谢您的所有输入。
- 您不应创建 /tmp 目录 - 此目录始终存在。
- 您应该将
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
我正在尝试捕获错误,检查 /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
我认为这个错误是因为我试图做一些我没有权限做的事情,我不明白是否有一种干净的方法来实现我正在尝试的事情?提前感谢您在此问题上花费的时间。
我已经用我更新的代码编辑了它来回答我的问题。感谢您的所有输入。
- 您不应创建 /tmp 目录 - 此目录始终存在。
- 您应该将
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