php 写个简单日志,一个简单php日志类

这篇博客详细介绍了PHP中日志处理的实现,包括定义基目录、引入配置文件、设置日志路径和日期格式,以及日志写入函数的使用。通过CI_Log类展示了如何创建、检查和写入日志文件,确保了日志记录的正确性和安全性。
摘要由CSDN通过智能技术生成

日志类如下,news目录为当前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

* @subpackageLibraries

* @categoryLogging

* @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

*

* @accesspublic

*/

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

*

* @accesspublic

* @paramstringthe error level

* @paramstringthe error message

* @paramboolwhether the error is a native PHP error

* @returnbool

*/

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

/**

* 配置文件

*/

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

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 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值