0

在我们的 Symfony2 应用程序中,我们为我们提供的特定服务查询外部 API。这个 API(我们称之为Acme API)有时会抛出错误消息,我们通过 Monolog 和 Gelf 将这些错误消息转发到 Graylog2 以跟踪中断。每个错误都记录error$logger->err().

消息显示在普通消息池中,但收集这些 A​​PI 错误消息的自定义流根本不显示任何消息。

所以我的主要问题是:为什么 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}"

Graylog流规则如下:

Host (regex): ^((?!mycompany-staging).)*$    // Needed to show only logs from the live servers
Facility: app
Full Message (regex): Acme API.*

(我们也尝试设置Full Message regexto.*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

0

Seemed to be a problem with Graylog2 itself, the stream started working normally after updating Graylog to the newest version and recreating the stream.

于 2013-10-28T12:56:45.943 回答