代码之家  ›  专栏  ›  技术社区  ›  mrtriangle

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

  •  -3
  • mrtriangle  · 技术社区  · 7 年前

    我正在尝试捕获错误,检查/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
    

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   Dorian    7 年前

    要使其工作并与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
    
        2
  •  0
  •   Ivan Olshansky    7 年前
    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
    
    推荐文章