Asf_Logger类, 这是一个日志静态类的封装
在使用日志类时, 建议开启日志缓冲区功能
在开启缓冲区时, 框架会自动关闭所有已打开的文件句柄(包括CLI、FPM)
如果 $adapter_id = ASF\LOGGER\FILE, 实例化类 Asf\Log\Adapter\File
如果 $adapter_id = ASF\LOGGER\SYSLOG, 实例化类 Asf\Log\Adapter\Syslog
在开启命名空间情况下(asf.use_namespace=1)类名为 Asf\Logger
测试工具: asf/tools/asf_log_benchmark.php
不开启缓冲区情况下, Asf\Logger与以下函数的对比:
开启缓冲区情况下, Asf\Logger与以下函数的对比:
<?php final class Asf_Logger { /* 目录使用配置asf.log_path, 非单例 */ public static object adapter(int $adapter_id, string $file_name) /* 单例, 无框架依赖, 只针对文件操作有效, 推荐使用 (Asf > 2.2.2) */ public static object init(string $full_path) /* 获取已经打开的所有文件句柄 */ public static array/null getHandles(void) }
<?php use Asf\Logger; $handler = Logger::init('/tmp/asf.logger.1.txt'); $handler->emergency('hello world'); $handler->alert('hello world'); $handler->critical('hello world'); $handler->error('hello world'); $handler->warning('hello world'); $handler->notice('hello world'); $handler->info('hello world'); $handler->debug('hello world'); $handler->close();
<?php use Asf\Logger; echo '-----error type-----', PHP_EOL; var_dump(Logger::init('')); var_dump(Logger::init(111)); var_dump(Logger::init('./222')); var_dump(Logger::init('////')); var_dump(Logger::init('/tmp/abcdefg/')); echo '-----getInstance-----', PHP_EOL; var_dump(is_object(Logger::init('/tmp/asf.logger.0.txt'))); var_dump(is_object(Logger::init('/tmp/asf.logger.0.txt'))); var_dump(is_object(Logger::init('/tmp/asf.logger.1.txt'))); echo '-----write log-----', PHP_EOL; var_dump(Logger::init('/tmp/asf.logger.1.txt')->emergency('hello world')); var_dump(Logger::init('/tmp/asf.logger.1.txt')->alert('hello world')); var_dump(Logger::init('/tmp/asf.logger.1.txt')->critical('hello world')); var_dump(Logger::init('/tmp/asf.logger.1.txt')->error('hello world')); var_dump(Logger::init('/tmp/asf.logger.1.txt')->warning('hello world')); var_dump(Logger::init('/tmp/asf.logger.1.txt')->notice('hello world')); var_dump(Logger::init('/tmp/asf.logger.1.txt')->info('hello world')); var_dump(Logger::init('/tmp/asf.logger.1.txt')->debug('hello world')); var_dump(Logger::init('/tmp/asf.logger.1.txt')->close()); echo '-----is_array-----', PHP_EOL; var_dump(is_array(Logger::getHandles()));