@al3x4kovs

Как правильно логировать?

Коллеги, у меня довольно емкий вопрос связанный с логированием. Дело в том, что скрипт будет работать в cron'e.
Итак, вот то, что я написал. Но насколько я понимаю я не все нюансы предусмотрел.
<?php
    ini_set('log_errors', 'On');
    ini_set('error_log', 'parse_errors.log'); //по сути сюда должны все ошибки падать

    $mysqli = new mysqli('серверt', 'логин', 'пароль', 'база');
    if (!mysqli_connect_errno()) {
$url="какой-то";
$user_agent='Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); // таймаут соединения думаю этого вполне достаточно иначе явно трабл какой-то. 
        curl_setopt($ch, CURLOPT_TIMEOUT, 10); // таймаут ответа
        curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
        curl_setopt($ch, CURLOPT_URL, $url);
         $err     = curl_errno( $ch ); //Возвращает код последней ошибки. Мне кажется не особо нужная вещь
         $errmsg  = curl_error( $ch );// Возвращает строку с описанием последней ошибки текущего сеанса
         $response = curl_exec($ch);//// загрузка страницы и её запись в переменную

каким-то образом мне проверочку на отсутствие ошибок и получение 200 сообщения http.
if( условие?){
левый код
}  
$mysqli->close();


Я сам питонщик, там все очень красиво логируется библиотекой logging, тут такого не нашел( возможно не так искал как-то)
Кучу лойсов тому, кто поможет!
  • Вопрос задан
  • 427 просмотров
Решения вопроса 2
romy4
@romy4
Exception handler
Вы питонщик и умеете ставить скрипты в кроне, но зачем вам извращаться?
чем плохо
script >> /var/log/mysuperscript-php.log
Ответ написан
@al3x4kovs Автор вопроса
<?php

function _log($var, $clear=FALSE, $path=NULL) {
    if ($var) {
        $date = '====== '.date('Y-m-d H:i:s')." =====\n";
        $result = $var;
        if (is_array($var) || is_object($var)) {
            $result = print_r($var, 1);
        }
        $result .="\n";
        if(!$path)
            $path = dirname($_SERVER['SCRIPT_FILENAME']) . '/mylog.txt';
        if($clear)
            file_put_contents($path, ''); 
        @error_log($date.$result, 3, $path);
        return true;
    }
    return false;
}
?>
//Далее используем try catch
try{
     //Допустим мы хотим внутри обработать какое-то условие и залогировать его
    //Ловим исключение и дополняем его например так:
   $a =1;
   if($a<0){
       echo "a меньше 0";
    }
    else{
      $excep="а больше 0";
      throw new Exception($except);

}
catch(Exception as $e){
 _log($e->getMessage());
}


//в Лог запишется:
//====== date ======
//а больше 0
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы