2011-11-23 2 views
12

내 질문을 게시하기 전에 많이 검색했습니다. 명확한 답을 찾지 못했습니다. 그래서 여기 있습니다.Symfony 2 : 특정 파일에 로그인

dev.log 또는 prod.log와 다른 로그 파일에 메시지를 로깅하려고합니다. Symfony 핵심 메시지에 의해 훼손되지 않는 파일을 의미합니다. 로거와 처리기는 모노 로고로 들었지만 그다지 명확하지 않습니다.

내 컨트롤러의 메시지를 특정 로그 파일에 기록하려면 어떻게해야합니까? 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] 

및 컨트롤러에 있습니다

+3

가능한 중복 : http://stackoverflow.com/questions/8169114/how-to-write-logs-from-one-service-into-separate-file –

+1

중복이 ISS 꼬임 때문에 당신의 링크는 솔루션의 일부입니다. app/config/config.yml에이 서비스를 추가하려고했지만 작동하게 만들 방법이 없었습니다. 지금까지 생성 된 로그 파일이 없습니다. – frinux

답변

22

당신은 services.yml 파일이 아닌 config.yml 파일을 정보를 추가해야 당신이 사용하는 행동 :

$logger = $this->get('my_service.logger'); 
+1

NetBeans를 사용하여 답변 해 주셔서 감사합니다. [@ my_service.logger_handler]를 사용하여 오류가 발생했습니다. 따옴표를 추가해야했습니다. [ "@ my_service.logger_handler"] 도움이 될 것으로 기대합니다. – Ashbay

+0

나를 위해 서비스를 추가 한 후에 만 ​​작동합니다 : yml 파일에 직접 없습니다. – Andreas

2

위의 대답은 나를 위해 완벽하게 잘 작동했습니다. 내 구성이 yaml이 아닌 xml에 있기 때문에 적응해야했습니다.

정확히 같은 구성이지만 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>