0

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
// ...
4

1 に答える 1