我使用Symfony2和monolog在定义的日志文件(mylogfile.log)中写入特定日志:
#config_dev.yml
monolog:
handlers:
main:
type: stream
path: %kernel.logs_dir%/%kernel.environment%.log
level: debug
file:
type: stream
path: %kernel.logs_dir%/mylogfile.log
level: info
Run Code Online (Sandbox Code Playgroud)
我通过以下方式访问控制器中的日志文件:
$logger = $this->get('logger'); // Log
$logger->info('somelogcontent');
Run Code Online (Sandbox Code Playgroud)
现在我的问题是我的日志文件包含整个信息级别,这意味着它给了我所有app.INFO日志(这是我想要的)和request.INFO(我真的不需要):
[2012-04-04 11:13:17] request.INFO: Matched route ... blablabla
[2012-04-04 11:13:17] app.INFO: somelogcontent
...
Run Code Online (Sandbox Code Playgroud)
有没有办法不记录Request.INFO?
麦克风
Ant*_*nko 10
您必须创建一个新的记录器服务,应该在您的类中使用它.像这样,config.yml:
services:
my_logger:
class: Monolog\Logger
arguments: [my_info]
calls:
- [pushHandler, [@my_log_handler]]
my_log_handler:
class: Monolog\Handler\StreamHandler
arguments: [%kernel.root_dir%/logs/my_info.log, 100]
Run Code Online (Sandbox Code Playgroud)
用法(Controller例如):
$this->get('my_logger')->info('info message');
Run Code Online (Sandbox Code Playgroud)
symfony cookbook中的更多详细信息.
对于MonologBundle版本2.4及更高版本(注意,MonologBundle的发布周期不再与symfony同步),您现在可以通过配置非常简单地定义新通道,而无需定义服务.
monolog:
channels: ["my_channel"]
handlers:
file:
type: stream
path: %kernel.logs_dir%/mylogfile.log
level: info
channels: my_channel
Run Code Online (Sandbox Code Playgroud)
现在只需在控制器中为新通道获取自动创建的记录器:
$logger = $this->get('monolog.logger.my_channel');
$logger->info('somelogcontent');
Run Code Online (Sandbox Code Playgroud)
我知道老问题,但MonologBundle ~2.4应该提到这个新功能.
| 归档时间: |
|
| 查看次数: |
10699 次 |
| 最近记录: |