我正在尝试注册新日志
@@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 创建一个文件夹(如果不存在)?
我正在尝试注册新日志
@@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")
你也可以这样做
directory_name = "name"
Dir.mkdir(directory_name) unless File.exists?(directory_name)
在 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