2017-03-25 6 views
0

私はRubyを初めて使用しており、状況に直面しています。スレッドごとのログファイルruby

私は3つのクラスを持っており、クラスごとに1つのスレッドを作成しています。問題は、どちらのクラスにも属しておらず、別のファイルにある3つのクラスで同じ関数が使用されていることです。

私はruby-1.9.3 Loggerを使用しています。スレッドごとに別々のログファイルを作成したいのですが、どうすればいいでしょうか?

+0

たとえば、 'Thread.current.object_id'を実行すると、現在のスレッドIDを取得できます。次に、このIDを使用してログファイル名を作成できます。 –

+0

私はこれを行いました。良いアイデアだと思いますが、ログファイルにどのようなクラスが対応しているか理解できるように、ログファイルに名前を付けたいだけです! スレッドを作成中にThread.current [:name] = "A"を試みましたが、他のクラスの関数に到達したときにThread.current [:name]で取り出すことができません その値を取得するための何かが欠けている? ありがとうございます –

+0

はい、あなたは何か間違っている可能性があります。 –

答えて

1
  • 各クラスのロガーを初期化する。たとえば、キャッシュを持つクラスメソッドなどで初期化する。
  • 3クラスから使用するメソッドにlogger引数を追加します。
  • これらのメソッドを使用するたびに、パラメータとして現在のロガーを渡します。
+0

私はクラス定義を変更することはできません、それを変更せずに方法を思い付く必要があります –

関連する問題