日志(Logger)
Mtphp\Log\Logger —— 极简文件日志器,零配置即可用(不依赖 Redis / 第三方库)。
// 方式一:全局助手 logger()(推荐,自动写到 <根>/runtime/logs/app.log,级别 info)
logger()->info('用户登录', ['uid' => 1]);
logger()->warning('内存偏高', ['mem' => '80%']);
logger()->error('出错了', $e); // $e 为 Throwable,自动提取 消息 + 文件:行号 + 堆栈
// 方式二:直接 new(可指定文件路径与最低级别)
$log = new \Mtphp\Log\Logger('runtime/logs/app.log', 'debug');
$log->debug('调试信息'); // debug 比 info 更详细,默认不记录
// 方式三:多通道(按日切分 / 不同级别)
logger()->channel('daily')->critical('严重错误');
要点:
- PSR-3 八级(数值越大越严重):
debug(100) <info(200) <notice(250) <warning(300) <error(400) <critical(500) <alert(550) <emergency(600);只记录 >= 设定级别的日志,减少无用磁盘 IO。 - 日志目录不存在时自动创建;写失败不影响主流程。
- 上下文支持数组(JSON 序列化)与异常对象(自动展开堆栈),方便排查。
- 多通道 + 按日切分:
logger()返回LogManager,默认通道可切换;daily驱动自动落到<path>-YYYY-MM-DD.log,避免单文件无限膨胀。配置见config/log.php的channels。 - 可选配置
config/log.php:推荐用channels(含single/daily驱动与各自path/level),也兼容旧扁平写法(path+level)。不配置则用框架默认值。
线上演示:访问
/demo/log会写一条日志到runtime/logs/app.log,可打开该文件查看格式。
日志增强细节(PSR-3 全级别、
DailyLogger按日切分、LogManager多通道)见第 24 节。