Логирование в консольных командах

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
nikitakls
Сообщения: 47
Зарегистрирован: 2011.01.25, 08:18

Логирование в консольных командах

Сообщение nikitakls »

Добрый день!

Вопрос такой подключаю логирование в конфиге console.php

Код: Выделить всё

'preload' => array('log'),
..
       'log' => array(
            'class' => 'CLogRouter',
            'routes' => array(
                array(
                    'class' => 'CFileLogRoute',
                    'levels' => 'error, warning, trace, info',
                    'categories' => 'reports',
                    'logFile' => 'reports.log',
                ),
            ),
        ),
Консольная команда у меня лазит через thrift в сервер статистики и получате отчеты.

Код: Выделить всё

        'thrift' => array(
            'class' => 'application.vendors.thrift.ThriftClient',
            'server_host' => 'server',
            'server_port' => '5555',
            'send_timeout' => 100,
            'recv_timeout' => 500,
        ),
Проблема в том, что если сервер статистики не доступен
Приложение падает и при этом ничего не пишет в логи.
Хотелось бы, чтобы при недоступности сервера писались логи что сервер не доступен и админу отсылалось сообщение об этом.

Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: Логирование в консольных командах

Сообщение lancecoder »

посмотрел исходный код должно вываливаться исключение TTransportException
вот его и правьте

Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: Логирование в консольных командах

Сообщение lancecoder »

или в try catch оборачивайте расширение

nikitakls
Сообщения: 47
Зарегистрирован: 2011.01.25, 08:18

Re: Логирование в консольных командах

Сообщение nikitakls »

Спасибо за ответ.

Мне кажется не очень хорошо оборачивать расширение, в try catch,
хотя по другому не знаю как хорошо сделать.
Кстати там бросается TException

А если задачу усложнить, нужно например чтобы если База mysql не доступна, тоже об этом писать в лог.
Получается все расширения нужно будет оборачивать в try catch.
Также нужно чтобы в консольных приложениях осылалось письмо админу, а при просмотре web бросалась ошибка на страницу.

Хотелось бы более универсального решения.

Ответить