Размещено: 2023-12-16 13:06:10
Теги: php
ЛОГИ НА PHP
Способ реализации записи данных в лог-файлы. С одновременным выводом на экран.
<?php function logger($type,$message) { //вывод логов на экран в режиме отладки, можно закомментировать echo '<log>'.$type.':'.$message.'</log>'; //если нет папки для логов, то создаем её $logPath=$_SERVER['DOCUMENT_ROOT'].'/logs'; if (!is_dir($logPath)) { mkdir($logPath, 0777, true); } //запись логов в журнал в виде строки из json-массива вида ["date","type","message"] file_put_contents($_SERVER['DOCUMENT_ROOT'].'/logs/'.date('Y_m_d').'.txt', json_encode(array(date('d.m H:i:s'),$type,$message)).PHP_EOL, FILE_APPEND); } logger('','========================= FILE START ========================='); logger('','======== work start ========'); logger('info','otvetvlenie_1'); logger('error','parameters'); ?> <style> log {display:block} </style>
PHP_EOL - перенос строки, можно просто написать вместо него "\n"
FILE_APPEND - запись строки с помощью file_put_contents, дописывает строку в файл
При этом для пользователей можно установить свойства css log {display:none}, и тем самым можно работать с отладкой и логами на работающем проекте.
Благодаря json'у потом из текстовых файлов можно все это легко выводить в html, подсвечивать ошибки, выводить в обратном порядке и т.д.
<?php //можно сделать array_reverse //$log=array_reverse(file('log.txt')); $log=file('log.txt'); echo '<table>'; foreach($log as $str) { $s=json_decode($str, true); echo '<tr class="'.$s[1].'"><td>'.$s[0].'</td><td>'.$s[1].'</td><td>'.$s[2].'</td></tr>'; unset($s); } echo '</table>'; ?> <style> table { border-collapse: collapse; } td { border: 1px solid black; padding: 5px; } .error { background-color: #fcaaaa; } </style>
На эту страницу чаще всего попадают по запросам: file_put_contents добавить, дописать строку, добавить строку, fopen, fwrite, создание новой папки, создание новой папки, создать папку, проверить папку, новая папка, новый файл, логирование