Подтвердить что ты не робот

Как создать папку (если нет) с помощью 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?

4b9b3361

Ответ 1

Попробуйте что-то вроде этого.

  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")

Ответ 2

Вы также можете сделать это

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

Ответ 3

Автоматическое создание каталогов журналов устарело в рельсах. Здесь фрагмент кода из кода 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