如何使用Logger.new创建文件夹(如果不存在)?

问题描述:

我想注册一个新的日志如何使用Logger.new创建文件夹(如果不存在)?

@@my_logger ||= Logger.new("#{Rails.root}/log/my.log") 

但是当我尝试生成新的文件夹,把它里面

@@my_logger ||= Logger.new("#{Rails.root}/log/today.to_s/my.log") 

返回Errno::ENOENT: No such file or directory

但愿这是一个权限问题? 如何使用Logger.new创建文件夹(如果不存在)?

尝试类似这样的事情。

dir = File.dirname("#{Rails.root}/log/#{today}/my.log") 

    FileUtils.mkdir_p(dir) unless File.directory?(dir) 

    @@my_logger ||= Logger.new("#{Rails.root}/log/#{today}/my.log") 
+0

谢谢你,伙计 – 2013-02-26 18:30:13

自动创建日志目录在rails中已被弃用。下面是来自Logger.new代码的代码片段:现在

ActiveSupport::Deprecation.warn("Automatic directory creation for '#{log}' is deprecated. Please make sure the directory for your log file exists before creating the logger. ") 

上通行的做法是,以确保日志文件(和目录)创建记录之前就已存在。

,以确保该目录存在的时间提前可能是使用类似的代码这一点的方法:

log_file_name = '/path/to/my.log' 
unless File.exist?(File.dirname(log_file_name)) 
    FileUtils.mkdir_p(File.dirname(log_file_name)) 
end 
+0

谢谢为信息....所以它被弃用....当我问,我的意思是要知道是否有一个参数记录器初始化器将处理创建的文件夹.. – 2013-02-27 13:37:31

你也可以做这样

directory_name = "name" 
Dir.mkdir(directory_name) unless File.exists?(directory_name)