转载自:http://blog.csdn.net/lxzo123/article/details/6371233
日志类如下,news目录为当前php文档根目录下子目录。
<?php
if( ! defined('BASEPATH') ) {
define ('BASEPATH', $_SERVER['DOCUMENT_ROOT'].'/news/');
}
require_once BASEPATH.'config/config.inc.php';
require_once BASEPATH.'config/constants.php';
define ("LOG_PATH", $config['log']['log_path']);
define ("LOG_DATE_FORMAT", $config['log']['log_date_format']);
/**
* Logging Class
* @subpackage Libraries
* @category Logging
* @link
*/
class CI_Log {
var $log_path = '../logs/';
var $_threshold = 4;
var $_date_fmt = 'Y-m-d H:i:s';
var $_enabled = TRUE;
var $_levels = array('ERROR' => '1', 'DEBUG' => '2', 'INFO' => '3', 'ALL' => '4');
/**
* Constructor
*
* @access public
*/
function CI_Log()
{
if( defined(LOG_PATH) )
{
$this->log_path = LOG_PATH;
}
if ( ! is_dir($this->log_path))
{
$this->_enabled = FALSE;
}
if ( defined(LOG_DATE_FORMAT) )
{
$this->_date_fmt = LOG_DATE_FORMAT;
}
}
// --------------------------------------------------------------------
/**
* Write Log File
*
* Generally this function will be called using the global log_message() function
*
* @access public
* @param string the error level
* @param string the error message
* @param bool whether the error is a native PHP error
* @return bool
*/
function write_log($level = 'error', $msg, $php_error = FALSE)
{
if ($this->_enabled === FALSE)
{
return FALSE;
}
$level = strtoupper($level);
if ( ! isset($this->_levels[$level]) OR ($this->_levels[$level] > $this->_threshold))
{
return FALSE;
}
$filepath = $this->log_path.'log-'.date('Y-m-d').'.log';
$message = '';
if ( ! $fp = @fopen($filepath, FOPEN_WRITE_CREATE))
{
return FALSE;
}
$message .= $level.' '.(($level == 'INFO') ? ' -' : '-').' '.date($this->_date_fmt). ' --> '.$msg."/n";
flock($fp, LOCK_EX);
fwrite($fp, $message);
flock($fp, LOCK_UN);
fclose($fp);
@chmod($filepath, FILE_WRITE_MODE);
return TRUE;
}
}
// END Log Class
/* End of file Log.php */
配置文件
config.inc.php
<?php
/**
* 配置文件
*/
if( ! defined('BASEPATH') ) {
define ('BASEPATH', $_SERVER['DOCUMENT_ROOT'].'/news/');
}
//数据库设定
$config['db']=array(
);
//日志文件目录
$config['log']=array(
'log_date_format' => 'Y-m-d H:i:s',
'log_path' => '../logs/'
);
?>
配置文件
constants.php
<?php
define('FILE_READ_MODE', 0644);
define('FILE_WRITE_MODE', 0666);
define('DIR_READ_MODE', 0755);
define('DIR_WRITE_MODE', 0777);
/*
|--------------------------------------------------------------------------
| File Stream Modes
|--------------------------------------------------------------------------
|
| These modes are used when working with fopen()/popen()
|
*/
define('FOPEN_READ', 'rb');
define('FOPEN_READ_WRITE', 'r+b');
define('FOPEN_WRITE_CREATE_DESTRUCTIVE', 'wb'); // truncates existing file data, use with care
define('FOPEN_READ_WRITE_CREATE_DESTRUCTIVE', 'w+b'); // truncates existing file data, use with care
define('FOPEN_WRITE_CREATE', 'ab');
define('FOPEN_READ_WRITE_CREATE', 'a+b');
define('FOPEN_WRITE_CREATE_STRICT', 'xb');
define('FOPEN_READ_WRITE_CREATE_STRICT', 'x+b');
/* End of file constants.php */