43 lines
1.0 KiB
PHP
43 lines
1.0 KiB
PHP
<?php
|
||
namespace App\Libraries;
|
||
|
||
use Throwable;
|
||
|
||
class CustomTraceLogger
|
||
{
|
||
protected $logFile;
|
||
|
||
public function __construct()
|
||
{
|
||
$logDir = WRITEPATH . 'trace_logs/';
|
||
if (!is_dir($logDir)) {
|
||
mkdir($logDir, 0777, true);
|
||
}
|
||
$this->logFile = $logDir . 'trace-' . date('Y-m-d') . '.log';
|
||
}
|
||
|
||
public function log($direction, $functionName, $lineNo, $params = [])
|
||
{
|
||
try {
|
||
$uuid = get_session_uuid();
|
||
|
||
$logEntry = [
|
||
'timestamp' => date('c'),
|
||
'uuid' => $uuid,
|
||
'direction' => $direction, // IN or OUT
|
||
'function' => $functionName,
|
||
'line' => $lineNo,
|
||
'params' => $params,
|
||
];
|
||
|
||
file_put_contents(
|
||
$this->logFile,
|
||
json_encode($logEntry) . PHP_EOL,
|
||
FILE_APPEND | LOCK_EX
|
||
);
|
||
} catch (Throwable $e) {
|
||
// Don’t break anything if logging fails
|
||
}
|
||
}
|
||
}
|