Katika maendeleo ya applications za PHP, mara nyingi hutokea makosa (errors) kama vile database connection failures, undefined variables, au exceptions zisizoshughulikiwa.
Kama hautarekodi makosa haya, utapata ugumu kuyagundua unapokuwa kwenye production environment.

Error Logging ni mbinu ya kurekodi makosa hayo kwenye log files au kwenye mfumo wa taarifa (logging system) ili kurahisisha debugging na maintenance.

๐Ÿง  Kwanini Error Logging ni Muhimu?

โœ… Hukusaidia kugundua matatizo kabla hayajawa makubwa.

โœ… Inaboresha security kwa kuficha taarifa nyeti kutoka kwa watumiaji.

โœ… Huongeza ubora wa system kwa kutoa historia ya makosa yaliyopita.

โœ… Husaidia developer au admin kufuatilia mwenendo wa system kwa urahisi.

โš™๏ธ Mfumo wa Kawaida wa Error Logging kwa PHP
<?php
// config/logging.php
define('LOG_FILE_PATH', __DIR__ . '/../logs/app_errors.log');

// Washa logging
ini_set('log_errors', '1');
ini_set('error_log', LOG_FILE_PATH);
ini_set('display_errors', '0'); // Usionyeshe makosa kwa user
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

// Custom Error Handler
function customErrorHandler($errno, $errstr, $errfile, $errline)
{
$date = date('Y-m-d H:i:s');
$message = sprintf("[%s] Error: %s in %s on line %d (level %d)%s",
$date, $errstr, $errfile, $errline, $errno, PHP_EOL
);
error_log($message, 3, LOG_FILE_PATH);
return false; // endelea na default handler
}

// Custom Exception Handler
function customExceptionHandler($exception)
{
$date = date('Y-m-d H:i:s');
$message = sprintf("[%s] Uncaught Exception: %s in %s on line %d%sTrace:%s%s%s",
$date,
$exception->getMessage(),
$exception->getFile(),
$exception->getLine(),
PHP_EOL,
PHP_EOL,
$exception->getTraceAsString(),
PHP_EOL
);
error_log($message, 3, LOG_FILE_PATH);
}

// Set handlers
set_error_handler('customErrorHandler');
set_exception_handler('customExceptionHandler');

// DEMO: Trigger errors
echo $undefinedVariable; // Notice
throw new Exception('Mfano wa exception error');

๐Ÿงพ Vidokezo Muhimu (Best Practices)
Hatua Maelezo
โš™๏ธ display_errors = Off Usionyeshe makosa kwa watumiaji, tumia log_errors badala yake.
๐Ÿงฉ error_reporting(E_ALL) Rekodi makosa yote muhimu, isipokuwa yale yasiyoathiri (notices).
๐Ÿ”’ Security Usilog password, token, au data binafsi.
๐Ÿงฐ Structured Logging Tumia format kama JSON au text uliyo na timestamps.
๐Ÿ—‚ File Rotation Fanya rotation ya log files (usiruhusu zipite size kubwa sana).
๐Ÿ“ฌ Notifications Tuma email kwa admin kama error kubwa imetokea.
๐Ÿงฑ Mfano wa Class ya Logger (Advanced Version)
<?php
class Logger {
private $logFile;

public function __construct($filePath = 'logs/app.log') {
$this->logFile = $filePath;
if (!file_exists(dirname($filePath))) {
mkdir(dirname($filePath), 0777, true);
}
}

public function info($message) {
$this->writeLog('INFO', $message);
}

public function error($message) {
$this->writeLog('ERROR', $message);
}

private function writeLog($level, $message) {
$date = date('Y-m-d H:i:s');
$entry = sprintf("[%s] [%s] %s%s", $date, $level, $message, PHP_EOL);
file_put_contents($this->logFile, $entry, FILE_APPEND);
}
}

// Usage:
$log = new Logger();
$log->info("System imeanza kufanya kazi vizuri.");
$log->error("Kuna kosa kwenye database connection.");

๐Ÿงฉ Jinsi ya Kuonyesha Video ya Mafunzo (Embed YouTube)
<iframe width="560" height="315"
src="https://www.youtube.com/embed/2952F_jgdq4?si=HiCZwz7SrrreXvA6&quot;
title="Error Logging Tutorial"
frameborder="0"
allowfullscreen>
</iframe>

๐Ÿ’ฌ Wasiliana Nasi kwa Msaada Zaidi

๐Ÿ“ž WhatsApp: https://wa.0693118509

๐ŸŒ Website: https://www.faulink.com

โ–ถ๏ธ YouTube: Error Logging Video

๐Ÿ”š Hitimisho

Error Logging ni msingi muhimu katika kutengeneza system salama na imara.
Kwa kutumia mbinu hizi, utaweza kurekodi na kufuatilia makosa kwa ufanisi, hivyo kuboresha reliability na security ya applications zako.

๐Ÿ”” Jaribu leo kwenye project yako ya PHP, na angalia jinsi makosa yanavyorekodiwa kwenye logs/app_errors.log