1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <?php
- /**
- * 日志类
- * @package_log log
- */
- class Log
- {
- /**
- * 日志文件大小限制
- * @var int 字节数
- */
- private static $log_size = 1048576; // 1024 * 1024 * 5 = 5MB
-
- /**
- * 设置单个日志文件大小限制
- *
- * @param int $size 字节数
- */
- public static function set_size($size)
- {
- if( is_numeric($size) ){
- self::$log_size = $size;
- }
- }
-
- /**
- * 写日志
- *
- * @param string $log_message 日志信息
- * @param string $log_type 日志类型
- */
- public static function write($log_message, $log_type = 'log')
- {
- $dir = getcwd().DIRECTORY_SEPARATOR.'logs'.DIRECTORY_SEPARATOR.$type;
- if(!is_dir($dir)){
- if(!mkdir($dir)){
- return false;
- }
- }
- if (!is_writable( $dir )) exit('LOG_PATH is not writeable !');
- $s_now_time = date('[Y-m-d H:i:s]');
- $log_now_day = date('Y_m_d');
- // 根据类型设置日志目标位置
- $log_path = $dir;
- switch($log_type)
- {
- case 'debug':
- $log_path .= 'Out_' . $log_now_day . '.log';
- break;
- case 'error':
- $log_path .= 'Err_' . $log_now_day . '.log';
- break;
- case 'log':
- $log_path .= 'Log_' . $log_now_day . '.log';
- break;
- default:
- $log_path .= 'Log_' . $log_now_day . '.log';
- break;
- }
- //检测日志文件大小, 超过配置大小则重命名
- if (file_exists($log_path) && self::$log_size <= filesize($log_path)) {
- $s_file_name = substr(basename($log_path), 0, strrpos(basename($log_path), '.log')). '_' . time() . '.log';
- rename($log_path, dirname($log_path) . DS . $s_file_name);
- }
- // 写日志, 返回成功与否
- return error_log("$s_now_time $log_message\n", 3, $log_path);
- }
- }
|