alex-robert / loggr
此包已被废弃,不再维护。未建议替代包。
PHP 日志记录器,PSR-3,还有什么吗?
3.0.0
2017-09-19 11:48 UTC
Requires
- php: >=7.0
This package is not auto-updated.
Last update: 2018-03-27 18:19:22 UTC
README
Loggr 是 PSR-3 日志记录器实现。
- 它只是一个日志记录器,所以我没有更多有趣或无趣的话要说。
- 蛋糕是谎言。
特性
- 任意数量的代理可以同时记录日志。
- 不同的代理可以配置在最小和最大级别之间记录日志
- 消息将自动与上下文格式化
- 文件代理:将日志写入文件。可以配置为自动轮换文件,在不同的文件中记录不同级别的日志
- MySQL 代理:将日志记录到 MySQL 数据库。可配置映射到任何现有表。需要 PDO 连接对象
- HTML 代理:就像文件代理一样,但添加了一些 HTML 格式化,以便在浏览器中查看日志
- 控制台代理:用于命令行日志,带颜色!
- 空代理:不执行任何操作。如果你需要将 PSR-3 日志对象传递到库,但不想实际记录任何内容,则很有用
要求
- PHP 7.0+(应与 PHP 5.4+ 兼容,但不再使用/测试过)
- 如果将日志记录到文件,则需要可写目录
- 如果使用 MySQL,则需要 PDO
安装
Composer
{ "minimum-stability": "dev", "require": { "alex-robert/loggr": "~3" } }
手动安装
下载源代码并解压到您的项目目录(但谁真的这么做呢?!)
快速指南
使用 Loggr
类
$Log = new \Loggr\Loggr(); //Add some log Agents $Log->add_agent(new \Loggr\Agent\File()); $Log->debug('This a debug message', ['Some', 'Context']);
静态日志记录
//Add some log Agents \Loggr\Log::add_agent(new \Loggr\Agent\File()); \Loggr\Log::add_agent(new \Loggr\Agent\MySQL()); //This will be logged to a File and in Mysql \Loggr\Log::alert('Things are going verry badly here'); //yes, it's important to give specific context to your logs, like "very" and "badly" here ;p
文件格式化示例
$Fl = new \Loggr\Agent\File(); $Fl->set_path('/tmp/logs/'); $Fl->get_formatter() ->set_format(\Loggr\Level::DEBUG, "{level} ::: {time} - {message} {context} \n") ->set_format('default', "{level} :: {time} - {message} \n") ->set_time_format('Y-m-d h:i:s') ->set_microtime(true) ->set_context_format('json'); $Fl->info('Hello {whom}', ['whom'=>'World']);
MySQL Loggr 示例
$Ml = new \Loggr\Agent\MySQL(); $Ml->set_connection(new PDO('mysql:host=localhost;dbname=test', 'logger')); $Ml->set_table_name('logs'); //Bind context and basics ('message', 'level', 'context', 'time') keys to DB columns $Ml->bind_column_names([ 'time' => 'created_at', 'level' => 'lvl', 'foo' => 'bar' ]); //Will bind "description" key (in the context) to description column $Ml->bind_column('description'); $Ml->debug('Test', ['description' => 'This is a test.', 'bar' => 'Just inside the context', 'foo' => 'Goes in bar column']);
日志级别
$Fl = new \Loggr\Agent\File(); $Fl->set_min_level(\Loggr\Level::INFO); //Logged $Fl->info('Hello world'); $Fl->alert('I have a very important message for you, world'); //Not logged $Fl->debug('Not logged, level INFO > DEBUG');
通道日志记录
通道是一堆日志代理。它实现了 LoggerInterface,你可以向其中添加多个代理,因此你可以使用通道同时记录到多个支持项。这对于在项目中分离日志用途/环境非常有用,例如有一个名为 api
的通道来跟踪 API 调用,另一个用于 internals_errors
,甚至还有一个具有特定日志级别的 dev
通道。通道与静态日志记录或 Loggr
类一起工作。
通道默认为显式:这意味着,当你使用 Loggr
类时,你必须指定要记录到的通道。如果没有指定通道,则日志将通过 add_agent
方法添加的任何代理传递。可以按通道或代理定义日志级别。代理级别是最后应用的。
许可证
MIT