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()));