Symfony2 アプリケーションでは、提供する特定のサービスの外部 API をクエリします。この API ( と呼びましょうAcme API
) は、エラー メッセージをスローすることがあり、それを Monolog と Gelf を介して Graylog2 に転送し、停止を追跡します。すべてのエラーはerror
レベルで記録されます$logger->err()
。
メッセージは通常のメッセージ プールに表示されますが、これらの API エラー メッセージを収集するカスタム ストリームにはメッセージがまったく表示されません。
私の主な質問は、Graylog がストリームにメッセージを表示することを拒否する理由と、その動作を変更するにはどうすればよいかということです。
構成
現在、合計 35 のストリームがあります (これは、サーバーに多数のアプリケーションがあるためです)。
Monolog に与えられるすべてのメッセージは、同じパターンを持っています。
Acme API Error on "{user action}": {error description}. Additional information: "{more information provided from the API}" on server "{web server name}" and domain "{domain}" for user "{session ID}"
グレイログ ストリームのルールは次のとおりです。
Host (regex): ^((?!mycompany-staging).)*$ // Needed to show only logs from the live servers
Facility: app
Full Message (regex): Acme API.*
(また、 と を設定しようとしましたFull Message regex
が.*Acme API.*
、Acme API Error.*
これらのどれも機能しませんでした)
モノログの構成は次のとおりです。
// config_prod.yml
// ...
monolog:
handlers:
main:
type: fingers_crossed
action_level: error
handler: nested
level: debug
nested:
type: stream
path: %kernel.logs_dir%/%kernel.environment%.log
level: debug
graylog:
type: gelf
level: warning
publisher:
hostname: mycompany-monitoring.mycompany.ch
// ...