牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

一个简单php日志类

转载自: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()
    {
        
ifdefined(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 */




posted on 2014-06-10 00:14 杨粼波 阅读(407) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理