2013-04-03 2 views
1

죄송합니다.이 스레드는 정말 좋지만 Symfony2를 어떻게 구성 할 것인가 ?-) 그냥 '큰 그림'을 얻지 마십시오.Symfony2 : 로깅 1. 자신의 채널 2. 자신의 파일 (dev에 있음)

내 번들에 대한 중앙 집중식 로그 채널을 만들고 싶습니다. 이 채널은 일반적으로 dev에있는 파일에 작성되어야합니다. 왜냐하면 prod.log에 기록되거나 supressed되어야합니다 (그 중 하나 또는 config로 전환 가능).

나는 해결책이 많은 문서와 튜토리얼에서 공유된다고 생각했다.

  1. 어디에서 어떻게 정의 할 수 있습니까?
  2. 핸들러는 config.yml에 정의되어 있습니다.
  3. 고유 한 처리기 클래스를 구현해야합니까?

매우 구체적인 질문이 아닙니다.

보너스 - 질문 : 4. 컨트롤러 (컨테이너에 대한 액세스) 외부에서 로깅이 가능할 때 서비스를 구현해야합니다.

답변

2

확인. 내 잘못은 오해와 멍청한 것이 었습니다.

좋아요, 그것은 단지 대신 자신의 구현의 클래스를 부여으로 구성하는 있기 때문에 : 저것이 스레드 (How to write logs from one service into separate file?을) 서비스 - 문서를 읽고 비교 한 후 나는 그것이 작동 가지고

config.yml :

services: 
    myOwnLogger: 
     class:  Symfony\Bridge\Monolog\Logger 
     arguments: [pushHandler, [@myOwnLogHandler]] 

    myOwnLogHandler: 
     class:  Monolog\Handler\StreamHandler 
     arguments: [%kernel.logs_dir%/%kernel.environment%.myOwnChannel.log, 200] #200 = INFO 

Egads 정말 쉽습니다. '다른'실을 이해하지 못해서 실례합니다. 클래스 : 완전 \ 자격을 갖춘 \ 로더 \ 클래스 \ 이름 인수 :

+0

자, 코드에서 * 로거를 어떻게 사용합니까? –

1

Switching a channel to a different handler을 보면 다른 로그 파일 (개발 중에 만 사용하려는 경우 config_dev.yml)에 로그하도록 구성하는 방법을 이해할 수 있습니다.

새 채널을 만들려면 (기본적으로 로거 서비스는 app 채널을 사용함) 서비스 using the monolog.logger tag에 삽입해야합니다. 로그를 해당 로거 인스턴스로 보내면이 채널에 대해 구성된 처리기로 이동합니다.

서비스 정의의 @logger은 필요한 채널에 대한 적절한 로거 인스턴스로 대체됩니다. 맞춤 태그를 추가하지 않으면 @logger은 그대로 유지되며 기본 (app) 채널을 갖게됩니다.

+0

들으, 나는이 두 가지 특성을 설명 할 수있는, 그 전에 monolog.logger 태그를 발견 [@logger] 난에이 클래스를 구현해야합니까 내 자신의? '[@logger]'는 무엇을합니까? – Sammy

+0

답변을 편집했습니다. 그러나 클래스/인수 항목은 로거를 사용하려는 클래스 여야합니다. 인수는 클래스의 생성자에 삽입됩니다. 의존성 주입 및 서비스에 대한 자세한 내용은 http://symfony.com/doc/current/book/service_container.html – Seldaek

+0

에서 알 수 있듯이 나는 monolog-logger-service에서 자신의 클래스를 주입하여 자체 채널을 만듭니다. 이 채널을 다루는 것은 다른 일입니다 (나중에 :-)). 나는 다시 시도하고 돌아올 것입니다. Thx bnow 님,이 클래스가 어떤 모습인지 찾아야합니다. – Sammy

관련 문제