Регистрация только сообщений уровня отладки в файл в symfony 1.4 - PullRequest
0 голосов
/ 30 сентября 2011

Большая часть журналирования моего приложения выполняется на уровне отладки, потому что в sf 1.4 он не используется самой Symfony, и это позволяет легко увидеть только те сообщения, которые мне интересны, используя что-то вроде:

tail -f log/frontend_dev.php | grep "\[debug\]"

Это замечательно в среде разработчиков, пока я сижу там и наблюдаю за его прокруткой, но теперь я хочу записать только эти сообщения отладки в производственной среде.

Если я установилуровень журнала для производственного журнала для отладки, тогда, очевидно, я доведу все до и включая уровень отладки, который является слишком большим количеством данных.

Можно ли написать регистратор, который будет просто записывать [отладка] сообщений и ничего больше?

1 Ответ

2 голосов
/ 30 сентября 2011

Конечно, это возможно - вы можете расширить sfFileLogger и переопределить функцию log($message, $priority) (которая sfFileLogger наследует от sfLogger класса).

...
public function log($message, $priority = self::DEBUG)
{
  if ($this->getLogLevel() != $priority)
  {
    return false;
  }

  return $this->doLog($message, $priority);
}
...

Теперь вам нужно настроить ведение журнала в вашем приложении, чтобы использовать новый класс логгера, конфигурация находится в app/<your app>/config/factories.yml:

prod:
  logger:
    class:   sfAggregateLogger
    param:
      level:   DEBUG
      loggers:
        sf_file_debug:
          class: myDebugOnlyLoggerClass
          param:
            level: DEBUG
            file: %SF_LOG_DIR%/%SF_APP%_%SF_ENVIRONMENT%.log

Этот регистратор будет сохранять только сообщения, зарегистрированные с тем же приоритетом (и только с тем же, а не с тем же или более высоким), как настроено в factories.yml.

...