Strona projektu: http://www.michell.pl/moje-projekty/mlogger/
Kod źródłowy:
<?php /** * @package mLogger * @author Michell `b4x` Hoduń * @copyright (c) 2009 Michell `b4x` Hoduń <mhodun@gmail.com> * @description Klasa odpowiedzialna za logowanie różnych informacji. * @url <a href="http://www.michell.pl/moje-projekty/mlogger/" target="_blank">http://www.michell.pl/moje-projekty/mlogger/</a> * @version 1.0 */ class mLogger { ( 'log_dir' => 'mlogger_logs', // Folder z logami 'date_format' => 'd/m/Y H:i:s', // Format daty logów via date() 'file_format' => 'd-m-Y', // Format nazewnictwa plików via date() 'file_extension' => '.txt', // Rozszerzenie logów 'log_mode' => 0, // 0 = Zapisuj wszystko, możesz ustawić dowolną liczbę dla logów. 'log_template' => '[:date: - :message: | level: :log_level: | :ip: <-> :req_url:]', // Szablon logów ); { if(mLogger::$_mLogger_instance === NULL) { mLogger::$_mLogger_instance = new mLogger ($config); } return mLogger::$_mLogger_instance; } { if (! file_exists(self::$_mLogger_config['log_dir'].DIRECTORY_SEPARATOR.date(self::$_mLogger_config['file_format']).self::$_mLogger_config['file_extension'])) { try { self::create_files(); } catch (Exception $e) { } } foreach ($config as $k => $v) { self::$_mLogger_config[$k] = $v; } } { ( 'message' => $message, 'mode' => $mode, ); } { $file_text = ''; foreach ($logs as $log) { ( ':message:' => $log['message'], ':ip:' => $_SERVER['REMOTE_ADDR'], ':req_url:' => $_SERVER['REQUEST_URI'], ':log_level:' => $log['mode'], ))."\r\n"; } @file_put_contents (self::$_mLogger_config['log_dir'].DIRECTORY_SEPARATOR.date(self::$_mLogger_config['file_format']).self::$_mLogger_config['file_extension'], file_get_contents(self::$_mLogger_config['log_dir'].DIRECTORY_SEPARATOR.date(self::$_mLogger_config['file_format']).self::$_mLogger_config['file_extension']).$file_text); } { if(! is_writable (self::$_mLogger_config['log_dir'])) throw new Exception('Log dir: <strong>'.self::$_mLogger_config['log_dir'].'</strong> is not writable'); if(!@touch (self::$_mLogger_config['log_dir'].DIRECTORY_SEPARATOR.date(self::$_mLogger_config['file_format']).self::$_mLogger_config['file_extension'])) throw new Exception('Can\'t create log file: <strong>'.self::$_mLogger_config['log_dir'].DIRECTORY_SEPARATOR.self::$_mLogger_config['file_format'].'</strong> — check chmod and try again.'); } public function __destruct() { if(self::$_mLogger_config['log_mode'] === 0) { foreach (self::$_mLogger_messages as $message_mode) { foreach ($message_mode as $message) $messages[] = $message; } } else { $messages = self::$_mLogger_messages[self::$_mLogger_config['log_mode']]; } self::save_to_file ($messages); } } ?>
Przykładowe użycie klasy:
<?php require 'mLogger.php'; // Przykładowa konfiguracja ( 'log_dir' => dirname(__FILE__).DIRECTORY_SEPARATOR.'mlogger_logs', // Absolutna ścieżka do katalogu z logami 'log_mode' => 0 // 0 = Zapisuj wszystko, możesz ustawić dowolną liczbę dla logów. )); // Przykładowe użycie klasy mLogger::instance()->add_log ('mLogger working!', 1); ?>
Klasę wraz z przykładem użycia można pobrać pod następującym adresem: http://www.michell.pl/sources/mLogger/mLogger_1.0.rar