2013-02-26 8 views
20

それが許可かもしれませErrno::ENOENT: No such file or directoryLogger.newでフォルダを作成する方法(存在しない場合)

を返し、私は新しいログ

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

を登録しようとしているが、私は新しいフォルダを生成しようとすると、

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

の内側にそれを置くために問題? Logger.newでフォルダを作成する方法(存在しない場合)

答えて

36

このようなものを試してみてください。

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

は男 –

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 
+0

ありがとう、ありがとう、この方法で行うことができます情報のため....それは非難された....私が尋ねたとき、私は、フォルダの作成を処理するロガーの初期化子のためのparamがあったかどうかを知りたい。 –

10

また

directory_name = "name" 
Dir.mkdir(directory_name) unless File.exists?(directory_name) 
関連する問題