2017-07-28 2 views
2

J'essaie de diffuser les journaux d'une application symfony 2 sur un serveur graylog 2 en utilisant le format gelf.Empêche une erreur de serveur interne avec Symfony 2/Monolog en cas de connexion gelf échouée

Ma configuration monolog se présente comme suit:

monolog: 
    handlers: 
      # --- 8< --- 
      # ... 
      # --- >8 --- 
      graylog: 
       type: gelf 
       publisher: 
        hostname: my-graylog-server.com 
        port: 12201 
       level: debug 
       formatter: app.gelf_formatter 

Lorsque le serveur graylog n'est pas disponible, je reçois (compréhensible) une connexion refusée erreur

[2017-07-28 16:03:25] app.ERROR: Failed to write to socket: fwrite(): send of 153 bytes failed with errno=111 Connection refused (8) [] [] 

qui se traduit par une erreur de serveur interne (500 code de réponse à la demande provoquant le journal).

Quelle est la meilleure façon d'attraper cette erreur? Avoir un journal des erreurs est résonable, mais je ne veux pas que mes demandes d'erreur lorsque le serveur de traitement de journal externe n'est pas disponible?

Répondre

1

La meilleure solution est d'avoir un mécanisme de mise en cache local sur votre serveur d'applications pour transférer les demandes. Ainsi, en cas d'arrêt momentané du serveur de journalisation, les demandes peuvent être mises en file d'attente. Des systèmes comme fluentd fonctionnent bien pour cela. D'autre part, si vous ne se soucient pas de perdre des messages du journal, vous pouvez regarder dans un transport qui ne tient pas compte des erreurs telles que IgnoreErrorTransportWrapper:

https://github.com/bzikarsky/gelf-php/blob/master/src/Gelf/Transport/IgnoreErrorTransportWrapper.php

Pour en savoir plus:

https://github.com/bzikarsky/gelf-php/issues/56

+0

Salut ! Merci pour la réponse rapide. Le wrapper IgnoreErrorTransport est ce que je recherche (pour le moment au moins). Savez-vous comment je peux spécifier cela dans la configuration de symfony? – Paul

+0

Désolé - aucune idée. Je n'ai pas fait symfony depuis 3 ans. :-P – PressingOnAlways

+0

OK, merci de toute façon, je devrais être capable de le trouver;) – Paul