Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Простая функция для логирования

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Simpel Log
esterio
Отправлено: 18 Июля, 2013 - 12:13:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




В связи со следующим топиком решил бросить очень простую функцию для логирования времени и данных если они были переданы в функцию.
PHP:
скопировать код в буфер обмена
  1. if(!function_exists('simpleLog'))
  2. {
  3.         define('SIMPLE_LOG_START_TIME', microtime(true));
  4.         define('SIMPLE_LOG_NAME', 'simple.log');
  5.         function simpleLog()
  6.         {
  7.                 static $filename = null;
  8.                 if($filename === null)
  9.                 {
  10.                         $filename = dirname(__FILE__).DIRECTORY_SEPARATOR.SIMPLE_LOG_NAME;
  11.                         if(is_writable($filename))
  12.                                 file_put_contents($filename, "\r\n\r\n========== ".$_SERVER["REQUEST_URI"]." =============\r\n", FILE_APPEND);
  13.                         else
  14.                                 $filename = null;
  15.                 }
  16.  
  17.                 $backtrace = debug_backtrace(false);
  18.                 $text = $backtrace[0]['file'].':'.$backtrace[0]['line'].' = '.round(microtime(true) - SIMPLE_LOG_START_TIME, 4).' sec.';
  19.                 if(func_num_args() > 0)
  20.                         $text .= "\r\n".implode("\r\n", array_map('print_r', func_get_args(), array_fill(0, func_num_args(), true)))."\r\n";
  21.  
  22.                 file_put_contents($filename, $text."\r\n", FILE_APPEND);
  23.         }
  24. }


Пример использваня:
PHP:
скопировать код в буфер обмена
  1. simpleLog();
  2. sleep(5);
  3. simpleLog('tralala', array('34', 4));

(Отредактировано автором: 18 Июля, 2013 - 12:22:42)

 
 Top
EuGen Администратор
Отправлено: 18 Июля, 2013 - 13:29:54
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Непонятно. Бегло:
0. Если файл не может быть записан, его имя становится null, но после всё равно будет попытка записи?
1.
Цитата:
array_map('print_r', func_get_args(), array_fill(0, func_num_args(), true)))
- зачем? чем хуже
?
2.
esterio пишет:
define('SIMPLE_LOG_START_TIME', microtime(true));
- долго думал, что бы это значило (вернее, смысл написанного). Вы определяете время как константу? Но тогда оно вычислится ровно один раз - даже не только потому, что это происходит в блоке function_exists (хотя и это выглядит странно - зачем нужен этот блок, если цель - написать функцию) - а потому что это - константа. Чтобы было понятнее:
- выведет одно и то же. Если нужно было вычислять относительное время, то, видимо, функцией не обойтись, корректнее создать статическое свойство класса, как пример.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
esterio
Отправлено: 18 Июля, 2013 - 13:55:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




EuGen пишет:
Если файл не может быть записан, его имя становится null, но после всё равно будет попытка записи?

Знаю, но exception бросать как то не хота было. ведь ето простой логер. Но да, можна использовать trigger_error
EuGen пишет:
print_r(func_get_args(), true)

Заахотельсь каждый аргумент вивсти отдельно
esterio пишет:
define('SIMPLE_LOG_START_TIME', microtime(true));

Время старта скрипта. Далле идет
esterio пишет:
round(microtime(true) - SIMPLE_LOG_START_TIME, 4)


Етот код написан где-то полтора года тому на коленке. На уникальность или универсальность не претендует.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB