問題タブ [log4r]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - Rails 4アプリケーションでLog4rは実際にスレッドセーフですか?
シーンの設定
デフォルトの Rails ロギングを本番環境でより役立つものにするために、私は Log4r とその診断コンテキスト、特にMDCを利用してきました。Rails アプリケーション自体から出力されるログに加えて、Rack ミドルウェアでも一貫したログを取得できるように、独自のミドルウェアもいくつか挿入しています。
たとえば、ログインしているユーザーに Warden 経由でアクセスできるようになるとすぐに、その部分に必要な MDC エントリを追加します。
Rack ミドルウェアに記録される他のものは、親 PID、リクエスト ID などです。
問題
問題は、ログ エントリが著しく間違っていることです。負荷がかかると、1 人のユーザーの ID が、まったく別のユーザーが API に対して行ったであろう要求と混ざり合っていることが常にわかります。
Log4r MDC はスレッドセーフで、Rails 4 はデフォルトでスレッドセーフであると言われていますが、明らかに何かが正しくありません。Rack が問題なのかどうかも疑問に思っていましたが、Rails のスレッド セーフ性 (完全に一言で言えば、Rails ではRack::Lockを削除するのに十分な自信があるようです) と思われますが、それも正しくないようです。
私は何が欠けていますか?すべての情報はスレッドセーフであると言っているようですが、そうであるとは確信していません。
フードの下
- レール 4.1.10
- Log4r 1.1.10
- 乗客 4.0.59
参考文献
ruby-on-rails-4 - Rails 4.2.4 での Log4r const_get の問題
アプリケーションで log4r を構成しようとしています: Gem info: gem 'log4r', '1.1.10' gem 'rails', '4.2.4' gem 'mysql2', '0.3.20'
アプリケーション.rb
アプリケーションクラスの内部:
config/log4r.yml
アプリケーションを起動しているときに、以下のエラーが発生しました:
ruby-on-rails - RoR 4.1 で log4r を使用した不要なログ
ログのフォーマットには RoR 4.1.12 と log4r gem を使用しています。大丈夫と思っていたのですが、ログレベルを変更したいのであれば全く影響ありません。
私は次のものを持っていますconfig/log4r_init.rb
:
および次のとおりconfig/log4r.yml
です。
開発モードでレベルが WARN であっても、エラー出力に同様のログ メッセージが多数表示されます。
なにが問題ですか?
r - パッケージ log4r-mongoDB 統合
log4r パッケージを調査したところ、コンソールとファイルのアペンダーがあることがわかりました。ログを mongoDB データベースにプッシュする方法を探しています。ログを mongoDB にプッシュする方法が見つかりません。同じためのアペンダーはありますか。
ティア