Asf_Logger


Introduction

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

Performance

测试工具: asf/tools/asf_log_benchmark.php

不开启缓冲区情况下, Asf\Logger与以下函数的对比:

开启缓冲区情况下, Asf\Logger与以下函数的对比:

Class synopsis

<?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)
}

Examples

Example #1

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

Example #2

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