2016-07-29 5 views
0

私はRailsでかなり新しいです。私は、ActionController :: Baseの派生クラスから関数内のファイルに情報を記録する必要があります。私はファイルに一度だけ追加する必要がありますが、並行プロセス/スレッドが行を破壊しないようにする必要があります。私は私のログに書かれた気まぐれな時間/ IPなどの書式は必要ありません。ActionControllerからRailsの自分のファイルにロギングしますか?

カスタムログを作成する方法を解明しようとしていますが、使用可能なすべての例がActiveRecord :: Baseから派生しているので混乱します(例:answer参照)。 File#flockでファイルにアトミックに書き込む方法も確認しましたが、これが本当に必要かどうかはわかりません。

正しい方向を教えていただきありがとうございます!

答えて

1

RubyのLoggerクラスの使用をお勧めします。

require 'logger' 

logger = Logger.new('FILE_PATH_TO_LOG_TO') 
logger.level = Logger::Info 

次にあなたがファイルをロックするために群れを使用し、その後で、ファイルに書き出すことができます:あなたがするために必要なものログインすることができ、ノーがあります確認する必要があります。この道を

logger.info("INFO_TO_WRITE") 

競合アクセス。

別の参照:http://ruby-doc.org/stdlib-2.3.0/libdoc/logger/rdoc/Logger.html

か:http://guides.rubyonrails.org/v3.2/debugging_rails_applications.html#the-logger

+0

おかげで答えを@KJS。私はそれを試みます。ちょうど1つの質問:もし私が "ロガー"クラスを使用していれば、それはすでに私が原子性を書くことを確実にしませんか?もしそうならば、私はフロックを必要としないだろうか? – XAnguera

+0

私はそのようなものを探していましたが、それが原子的に書かれているかどうかについて明確な説明を見つけることができませんでした。私はそれを制御するために何かが必要なように見えたから – KJS

+0

私のクラスのinitializeメソッドにlogger.new()ステートメントを置くことで提案を試みましたが、クラスの関数が呼び出されるたびに呼び出されます。私はこれが非常に非最適であると考えています。私は何かをログに記録する必要があるときはいつでも、自分自身でファイルを閉じて開くことを試しています。 – XAnguera

関連する問題