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

Ruby on rails 如何使用Logger.new创建文件夹(如果不存在)?,ruby-on-rails,ruby,logging,Ruby On Rails,Ruby,Logging,我正在尝试注册一个新日志 @@my_logger ||= Logger.new("#{Rails.root}/log/my.log") 但当我尝试生成新文件夹时,要将其放入 @@my_logger ||= Logger.new("#{Rails.root}/log/today.to_s/my.log") 它返回Errno::enoint:没有这样的文件或目录 这可能是许可问题吗? 如何使用Logger.new创建文件夹(如果不存在)?尝试类似的方法 dir = File.dirname(

我正在尝试注册一个新日志

@@my_logger ||= Logger.new("#{Rails.root}/log/my.log")
但当我尝试生成新文件夹时,要将其放入

@@my_logger ||= Logger.new("#{Rails.root}/log/today.to_s/my.log")
它返回
Errno::enoint:没有这样的文件或目录

这可能是许可问题吗?
如何使用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")

rails中不推荐自动创建日志目录。以下是记录器中的代码片段。新代码:

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

你也可以这样做

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

谢谢你提供的信息。。。。所以它被弃用了。。。。当我询问时,我想知道是否有一个用于记录器初始值设定项的参数,该参数将处理文件夹的创建。。