Symfony 2 中默认独白的自定义独白处理程序
Posted
技术标签:
【中文标题】Symfony 2 中默认独白的自定义独白处理程序【英文标题】:Custom monolog handler for default monolog in Symfony 2 【发布时间】:2012-10-07 19:25:01 【问题描述】:我想在Symfony 2 的默认独白中添加自定义处理程序。
在我的config.yaml
文件中,我有:
monolog:
handlers:
main:
type: stream
path: %kernel.logs_dir%/%kernel.environment%.log
level: debug
myHandler:
type: Acme\MyBundle\Monolog\MyCustomHandler
level: error
我的班级如下所示:
// Acme\MyBundle\Monolog\MyCustomHandler
use Monolog\Logger;
use Monolog\Handler\SocketHandler;
use Monolog\Formatter\LineFormatter;
class MyCustomHandler extends AbstractProcessingHandler
...
但即使在我填写课程之前,我也会收到一个错误:
为处理程序“myHandler”提供的处理程序类型“acme\mybundle\monolog\mycustomhandler”无效
如何在不创建新的独白服务的情况下向默认独白添加自定义处理程序?
【问题讨论】:
为什么不想创建服务? 这只是一个关于这个非常古老且有用的问题的示例,供未来读者参考:完整工作示例在这里:inanzzz.com/index.php/post/53en/… 【参考方案1】:试试这个:
monolog:
handlers:
main:
type: stream
path: %kernel.logs_dir%/%kernel.environment%.log
level: debug
custom:
type: service
id: my_custom_handler
services:
my_custom_handler:
class: Acme\MyBundle\Monolog\MyCustomHandler
如果你想将它用作默认处理程序,那么你应该更改我上面写的一些独白部分。
monolog:
handlers:
main:
type: stream
path: %kernel.logs_dir%/%kernel.environment%.log
level: debug
handler: custom
custom:
type: service
id: my_custom_handler
希望对你有帮助。
【讨论】:
好答案!非常有帮助。谢谢!【参考方案2】:我刚刚发现Monolog
附带了一组不同的处理程序,因此您可能想使用其中一个而不是自己编写。我使用LogEntriesHandler
登录logentries.com,但这里记录的还有更多:https://github.com/Seldaek/monolog#log-specific-servers-and-networked-logging
我的 Symfony2 配置如下所示:
monolog:
main:
type: fingers_crossed
level: debug
handler: nested
custom:
type: service
id: monolog.handler.logentries
level: error
services:
monolog.handler.logentries:
class: Monolog\Handler\LogEntriesHandler
arguments:
token: %logentries_token%
【讨论】:
以上是关于Symfony 2 中默认独白的自定义独白处理程序的主要内容,如果未能解决你的问题,请参考以下文章