我使用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
我通过以下方式访问控制器中的日志文件:
$logger = $this->get('logger'); // Log
$logger->info('somelogcontent');
现在我的问题是我的日志文件包含整个信息级别,这意味着它给了我所有app.INFO日志(这是我想要的)和request.INFO(我真的不需要):< / p>
[2012-04-04 11:13:17] request.INFO: Matched route ... blablabla
[2012-04-04 11:13:17] app.INFO: somelogcontent
...
有没有办法不记录Request.INFO?
麦克
答案 0 :(得分: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]
用法(例如Controller
中):
$this->get('my_logger')->info('info message');
symfony cookbook中的更详细信息。
答案 1 :(得分:6)
对于MonologBundle版本2.4及更高版本(注意,MonologBundle的发布周期不再与symfony同步),您现在可以通过配置非常简单地定义新通道,而无需定义服务。
monolog:
channels: ["my_channel"]
handlers:
file:
type: stream
path: %kernel.logs_dir%/mylogfile.log
level: info
channels: my_channel
现在只需在控制器中获取自动创建的新频道记录器:
$logger = $this->get('monolog.logger.my_channel');
$logger->info('somelogcontent');
我知道旧问题,但应提及MonologBundle
~2.4
中的这一新功能。
答案 2 :(得分:2)
此日志消息来自 router_listener 服务。您可以在服务配置文件中重新定义它。
我在主捆绑包config / services.yml中做了什么:
services:
# ...
router_listener:
class: %router_listener.class%
arguments: ['@router', %request_listener.http_port%, %request_listener.https_port%]
tags:
- { name: kernel.event_listener, event: kernel.request, method: onEarlyKernelRequest }
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
它使“匹配路由...”日志消息不被记录(因为RouterListener在其构造函数参数中没有记录器服务)。
答案 3 :(得分:1)
您可以提供用户警报级别。 文件: 类型:流 path:%kernel.logs_dir%/ mylogfile.log 级别:警报
$logger = $this->get('logger'); // Log
$logger->alert('somelogcontent');
答案 4 :(得分:0)
在您的config \ packages \ monolog.yaml文件中添加“ app”专用频道
monolog:
handlers:
info:
type: rotating_file
path: '%kernel.logs_dir%/info_%kernel.environment%_info.log'
level: info
max_files: 10
channels: app
我使用symfony 4(或5)
答案 5 :(得分:0)
添加您的monolog配置 例如,如果我使用handler:test
test:
type: filter
accepted_levels: [info]
handler: test_info
test_info:
type: stream // many possibilities(rotating_file..)
level: info
path: // the path where you save file log