<php /** * 日志类 * * @package log * @version $Id$ */ class Log { /** * 单个日志文件大小限制 * * @var int 字节数 */ private static $i_log_size = 5242880; // 1024 * 1024 * 5 = 5M /** * 设置单个日志文件大小限制 * * @param int $i_size 字节数 */ public static function set_size($i_size) { if( is_numeric($i_size) ){ self::$i_log_size = $i_size; }<code> } /** * 写日志 * * @param string $s_message 日志信息 * @param string $s_type 日志类型 */ public static function write($s_message, $s_type = 'log') { // 检查日志目录是否可写 if ( !file_exists(LOG_PATH) ) { @mkdir(LOG_PATH); } chmod(LOG_PATH,0777); if (!is_writable(LOG_PATH)) exit('LOG_PATH is not writeable !'); $s_now_time = date('[Y-m-d H:i:s]'); $s_now_day = date('Y_m_d'); // 根据类型设置日志目标位置 $s_target = LOG_PATH; switch($s_type) { case 'debug': $s_target .= 'Out_' . $s_now_day . '.log'; break; case 'error': $s_target .= 'Err_' . $s_now_day . '.log'; break; case 'log': $s_target .= 'Log_' . $s_now_day . '.log'; break; default: $s_target .= 'Log_' . $s_now_day . '.log'; break; } //检测日志文件大小, 超过配置大小则重命名 if (file_exists($s_target) && self::$i_log_size <= filesize($s_target)) { $s_file_name = substr(basename($s_target), 0, strrpos(basename($s_target), '.log')). '_' . time() . '.log'; rename($s_target, dirname($s_target) . DS . $s_file_name); } clearstatcache(); // 写日志, 返回成功与否 return error_log("$s_now_time $s_message\n", 3, $s_target); } } ?> |
使用日志类:
<?php define('DS', DIRECTORY_SEPARATOR); // 设置目录分隔符 define('LOG_PATH',dirname(__FILE__).DS.'log'.DS); // 日志文件目录 require './Log.class.php'; // 导入日志类文件 Log::set_size(1024*1024*10); // 设置单个文件大小 Log::write('Error: aaaa','log'); // 写日志 ?> |
转自:http://blog.gzconans.com/?p=1285
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决