我在發佈我的問題之前搜索了很多。我沒有找到明確的答案,所以在這裏。Symfony 2:登錄到特定文件
我想將消息記錄在與dev.log或prod.log不同的日誌文件中。我的意思是一個不會被Symfony核心信息所迷惑的文件。我聽說過獨角獸中的記錄器和處理器,但它不是很清楚。
如何從我的控制器,型號到特定的日誌文件記錄消息?
我在發佈我的問題之前搜索了很多。我沒有找到明確的答案,所以在這裏。Symfony 2:登錄到特定文件
我想將消息記錄在與dev.log或prod.log不同的日誌文件中。我的意思是一個不會被Symfony核心信息所迷惑的文件。我聽說過獨角獸中的記錄器和處理器,但它不是很清楚。
如何從我的控制器,型號到特定的日誌文件記錄消息?
您必須將信息添加到services.yml文件,而不是config.yml文件:
所以在services.yml
(或services.xml
)你有
my_service.logger:
class: Symfony\Bridge\Monolog\Logger
arguments: [app]
calls:
- [pushHandler, [@my_service.logger_handler]]
my_service.logger_handler:
class: Monolog\Handler\StreamHandler
arguments: [%kernel.logs_dir%/%kernel.environment%.admin.log, 200]
,並在控制器您使用的操作:
$logger = $this->get('my_service.logger');
上面的答案對我來說工作得很好。我不得不適應它,因爲我的配置是在xml中,而不是yaml。
下面是完全相同的配置,但使用xml。
<service id="my_service.logger" class="Symfony\Bridge\Monolog\Logger">
<argument type="string">app</argument>
<call method="pushHandler">
<argument type="service" id="my_service.logger_handler" />
</call>
</service>
<service id="my_service.logger_handler" class="Monolog\Handler\StreamHandler">
<argument>type="string">%kernel.logs_dir%/%kernel.environment%.license.log</argument>
<argument type="string">200</argument>
</service>
可能重複:http://stackoverflow.com/questions/8169114/how-to-write-logs-from-one-service-into-separate-file –
重複的這ISS糾結,因爲你的鏈接只是解決方案的一部分。我試圖在app/config/config.yml中添加這個服務,但沒辦法讓它工作。目前沒有創建日誌文件。 – frinux