Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for new handlers #4

Open
11 of 15 tasks
Seldaek opened this issue Apr 23, 2012 · 27 comments
Open
11 of 15 tasks

Add support for new handlers #4

Seldaek opened this issue Apr 23, 2012 · 27 comments

Comments

@Seldaek
Copy link
Member

Seldaek commented Apr 23, 2012

Missing handlers:

  • mongodb
  • couchdb / doctrinecouchdb
  • elasticsearch / elastica
  • dynamodb
  • syslogd
  • loggly
  • browserconsole (might need to be made the default in the standard edition if it works well)
  • filter
  • flowdock
  • rollbar
  • whatfailuregroup
  • mandrill
  • slack
  • fleephook
  • sampling
@wheelsandcogs
Copy link

It looks like ChromePHP and Gelf support are now included, so I'd like to add support for the MongoDB handler, but I'm not sure of the best approach. Following the existing handler config would give something like:

<?php
// ..... snip ....

case 'mongodb':
    $definition->setArguments(array(
        new \Mongo($handler['host']),
        $handler['database'],
        $handler['collection'],
        $handler['level'],
        $handler['bubble'],
    ));
    break;

and allow a config like:

monolog:
    handlers:
        main:
            type:  stream
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: debug
        mongo:
            type: mongodb
            host: mongodb://localhost:27017
            database: logs
            collection: prod
            level: debug
            bubble: true

Creating the Mongo instance there is clearly not the correct way to do it, but I don't know the Service or DI layers well enough to know how to inject it correctly? Also, if I'm using Doctrine MongoDB ODM, it would be nice to be able to reuse the connection thats already been configured for that so that I don't have to maintain two separate configs.

Any ideas?

@Seldaek
Copy link
Member Author

Seldaek commented Aug 9, 2012

We could have an id: @foo.bar instead of host: mongodb://localhost:27017 (though that should also remain possible IMO if you only use mongo for logging). If it's provided you just use a new Reference($handler['id']) instead of that new Mongo.

You can look at the Gelf config for inspiration: https://github.com/symfony/MonologBundle/blob/master/DependencyInjection/MonologExtension.php#L133-148

@florianeckerstorfer
Copy link

@Seldaek I've tried to implement this as you described, however I end up with a circular reference.

The problem is that Doctrine\MongoDB\Connection only returns a \Mongo object after it has been initialised (with the method initialize and that at that point Doctrine requires a Monolog logger.

Any suggestions how this can be implemented?

@stof
Copy link
Member

stof commented Sep 17, 2012

@florianeckerstorfer you have to use a mongo connection with logging disabled if you want to get it from the doctrine connection.

Seldaek added a commit that referenced this issue Jul 29, 2013
Seldaek added a commit that referenced this issue Jul 29, 2013
Seldaek added a commit that referenced this issue Jul 29, 2013
Seldaek added a commit that referenced this issue Jul 29, 2013
@pacoVela
Copy link
Contributor

pacoVela commented Oct 3, 2013

Is anyone working in mongodb handler?

@Seldaek
Copy link
Member Author

Seldaek commented Oct 3, 2013

I don't think so. I looked into it but it seemed non-trivial to wire up the doctrine mongo stuff etc so I gave up. If you'd like to give it a shot it would be much appreciated.

@pacoVela
Copy link
Contributor

pacoVela commented Oct 4, 2013

I'm wondering if doctrine is really necessary here. We can make the connection with a simple service, or directly with host/port/user/pass params. So you can use the same params for doctrine and monolog configurations, but it's only a matter of taste.

I agree with you that it is not trivial to do it with doctrine.

@wheelsandcogs
Copy link

My concern was duplicating the config if you were already using doctrine, and possibly the overhead of having another connection just for logging. Obviously it would be nicer to re-use the existing config and connection if possible, but I'd rather have a working mongodb handler with extra config than no handler at all.

@pacoVela
Copy link
Contributor

pacoVela commented Oct 8, 2013

Using params you don't have to repeat the literals for database host, and user... So you're true, the only caveat here is the overhead by the existence of another connection. In my case this is needed because we use a server just for logs.

@pacoVela
Copy link
Contributor

pacoVela commented Oct 9, 2013

I have the mongodb basic implementation ready to merge, (without doctrine stuff).
https://github.com/pacoVela/MonologBundle

hason added a commit to hason/monolog-bundle that referenced this issue Dec 23, 2013
hason added a commit to hason/monolog-bundle that referenced this issue Dec 26, 2013
Seldaek added a commit that referenced this issue Jan 19, 2014
Add LogglyHandler support, refs #4
@kingcrunch
Copy link

It looks like the list in the initial description isn't up to date anymore?

@Seldaek
Copy link
Member Author

Seldaek commented May 14, 2014

@kingcrunch care to elaborate? I usually try to update it but maybe I missed one.

@kingcrunch
Copy link

@Seldaek I meant the list in this PR (above). I cannot edit that.

@Seldaek
Copy link
Member Author

Seldaek commented May 14, 2014

Yes I can update it but what is not up to date exactly?

@emgiezet
Copy link

emgiezet commented Jun 3, 2014

I will add here the errbit / airbrake handler if its possible.

@Seldaek
Copy link
Member Author

Seldaek commented Jun 3, 2014

@emgiezet not sure what these have to do with monolog? Are there handlers out there somewhere that I don't know of?

@fotomerchant
Copy link

I've just submitted #92 for Slack support. Also submitted Seldaek/monolog#377 @Seldaek to add support to monolog SlackHandler for the emoji icons used by Slack.

Example conifg:

slack:
            type: slack
            token: xxxxxxx
            channel: C9342CD
            bot_name: YourBotName
            use_attachment: true
            icon_emoji: monkey_face
            level: error

@mpdude
Copy link
Contributor

mpdude commented Oct 28, 2014

Support for the WhatFailureGroupHandler is in #107.

@moonbeamglitterblossom
Copy link

Is there any way Rocket.Chat can be added to this list?

@PSF1
Copy link

PSF1 commented Nov 9, 2021

I found a RocketChat Monolog handler that may simplify integration with Symfony: https://github.com/exileed/rocketchat-monolog by @exileed

@PSF1
Copy link

PSF1 commented Nov 10, 2021

I'm working in a RocketChat integration pull request.

@PSF1
Copy link

PSF1 commented Nov 10, 2021

Monolog project don't want add RocketChat support into main project: Seldaek/monolog#1310
Could monolog-bundle reference the @exileed's handler?

@stof
Copy link
Member

stof commented Nov 10, 2021

Define a service for your handler and use the service type in the MonologBundle config

@PSF1
Copy link

PSF1 commented Nov 10, 2021

This way? https://symfony.com/doc/current/logging/handlers.html

# config/packages/prod/monolog.yaml
monolog:
    handlers:
        es:
            type: service
            id: Symfony\Bridge\Monolog\Handler\ElasticsearchLogstashHandler

@stof
Copy link
Member

stof commented Nov 10, 2021

yes, exactly.

@PSF1
Copy link

PSF1 commented Nov 10, 2021

Thx so much :_ D

I have it working with less problems...

@Okhoshi
Copy link
Contributor

Okhoshi commented Nov 6, 2023

Support for SamplingHandler is in #471

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests