PHP日志组件,可以使用多种存储方式记录日志,并且可以自由扩展。
use AGarage\ULog\ULog as ULog;
use AGarage\ULog\Writer\DoctrineStorage as DoctrineStorage;
use Psr\Log\LogLevel as LogLevel;
$config = [
'host' => 'localhost',
'service' => 'ULog test',
'storages' => [
[
'class' => 'AGarage\ULog\Storage\SingleFileStorage',
'level' => ULog::INFO,
'path' => '/tmp/ulog.log'
]
]
];
//初始化单例模式ULog
ULog::initialize($config);
//获取单例模式ULog
$logger = ULog::getLogger();
$anotherLogger = new ULog($config);
//初始化一个数据库连接用于ULog
$conn = \Doctrine\DBAL\DriverManager::getConnection([
'driver' => 'pdo_mysql',
'host' => 'localhost',
'user' => 'root',
'password' => '123456',
'dbname' => 'app',
'charset' => 'utf8'
]);
//创建一个DoctrineStorage
$storage = new DoctrineStorage([
'level' => LogLevel::INFO
]);
//为DoctrineStorage设置数据库连接
$storage->setConnection($conn);
//向ULog添加Storage
$logger->addStorage($storage);
$logger->info('This log will be written by storages in $logger.');
$anotherLogger->debug('This log will not written by storages in $anotherLogger.');[
'host' => 'localhost', //产生日志的主机名(默认localhost)
'service' => 'ULog' //产生日志的服务名(默认ULog)
'storages' => [ //Writers
[
'class' => 'AGarage\ULog\Storage\SingleFileStorage', //Storage的类名(必须)
'level' => LogLevel::INFO //大于该等级的日志将被记录(默认DEBUG)
'path' => '/tmp/ulog.log' //日志文件路径(必须)
]
]
]使用单个文本日志文件记录日志
[
'class' => 'AGarage\ULog\Storage\SingleFileStorage', //Writer的类名(必须)
'level' => LogLevel::INFO //大于该等级的日志将被记录(默认DEBUG)
'path' => '/tmp/ulog.log' //日志文件路径(必须)
]使用Doctrine记录日志
[
'class' => 'AGarage\ULog\Storage\DoctrineStorage',
'level' => LogLevel::INFO //默认DEBUG
]初始化该类型Storage后需要调用setConnection方法为其设置数据库连接