登录 Symfony 3 有什么不对
What isn't right with logging in Symfony 3
我在不同的文件中为不同的通道配置了记录器,但它对我不起作用。它的工作,但它写在控制台而不是指向文件中。
我需要在频道搜索中将日志写入文件。
这是我的代码:
#app/config/config_dev.yml
monolog:
handlers:
search:
type: stream
level: error
path: "%kernel.logs_dir%/search_log.log"
channels: [search]
main:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
channels: [!event, !search]
console:
type: console
channels: [!event, !doctrine, !search]
定义的服务:
#MyBundle/Resources/config/services.yml
services:
app.logger_search:
class: Symfony\Bridge\Monolog\Logger
arguments: ["@logger"]
tags:
- {name: monolog.logger, channel: search}
现在使用it服务,试试看:
#MyController.php
/**
* @Route("/test")
*/
public function test()
{
$this->get("app.logger_search")->error("Test");
return $this->json("test");
}
但它会写入文件的控制台。
控制台 我的意思是我 运行 我的服务器:php bin\console server:run
.
创建您自己的频道。这可以通过 configuration or by tagging your service 和 monolog.logger
并指定服务应登录到哪个频道(就像您所做的那样)来完成。
两种方式都有效,在这两种情况下,您的记录器都将被命名为:
monolog.logger.<you-channel-name>
因此请使用 monolog.logger.search
而不是您的服务 ID app.logger_search
来解决问题。
如果您没有充分理由更改记录器行为,我建议 configure additional channels without tagged services:
# app/config/config.yml
monolog:
channels: ['foo', 'bar']
有了这个,您现在可以使用自动注册的记录器服务 monolog.logger.foo
.
将日志消息发送到 foo
频道
我在不同的文件中为不同的通道配置了记录器,但它对我不起作用。它的工作,但它写在控制台而不是指向文件中。 我需要在频道搜索中将日志写入文件。 这是我的代码:
#app/config/config_dev.yml
monolog:
handlers:
search:
type: stream
level: error
path: "%kernel.logs_dir%/search_log.log"
channels: [search]
main:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
channels: [!event, !search]
console:
type: console
channels: [!event, !doctrine, !search]
定义的服务:
#MyBundle/Resources/config/services.yml
services:
app.logger_search:
class: Symfony\Bridge\Monolog\Logger
arguments: ["@logger"]
tags:
- {name: monolog.logger, channel: search}
现在使用it服务,试试看:
#MyController.php
/**
* @Route("/test")
*/
public function test()
{
$this->get("app.logger_search")->error("Test");
return $this->json("test");
}
但它会写入文件的控制台。
控制台 我的意思是我 运行 我的服务器:php bin\console server:run
.
创建您自己的频道。这可以通过 configuration or by tagging your service 和 monolog.logger
并指定服务应登录到哪个频道(就像您所做的那样)来完成。
两种方式都有效,在这两种情况下,您的记录器都将被命名为:
monolog.logger.<you-channel-name>
因此请使用 monolog.logger.search
而不是您的服务 ID app.logger_search
来解决问题。
如果您没有充分理由更改记录器行为,我建议 configure additional channels without tagged services:
# app/config/config.yml
monolog:
channels: ['foo', 'bar']
有了这个,您现在可以使用自动注册的记录器服务 monolog.logger.foo
.
foo
频道