Размещено: 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, создание новой папки, создание новой папки, создать папку, проверить папку, новая папка, новый файл, логирование