vkr / custom-logger-bundle
用于在 Symfony2/3 中将日志记录到非默认文件的包
Requires
- php: >=5.6
- symfony/monolog-bundle: ~2.4
- symfony/symfony: ~2.8|~3.0
Requires (Dev)
- phpunit/phpunit: >=5.4
README
此包是 Monolog 上的一个简单的语法包装器,允许轻松地在多个日志文件之间切换。它除了 Monolog 和 Symfony 之外没有其他依赖项,安装时无需做任何事情。
用法
以下是使用此包的方式。从您的控制器中
$logger = $this->get('vkr_custom_logger.logger');
$logger->setLogger('my_log');
$logger->addInfo('hello world');
使用 Monolog 的 info 和时间戳打印的 'hello world' 消息将输出到文件 /app/logs/my_log.log
(对于 Symfony3 为 /var/logs/my_log.log
)。如果此文件不存在,将抛出 FileNotFoundException
。
如果您手动初始化服务,则需要指定不包含尾随斜杠的 app/
目录的路径
$logger = new VKR\CustomLoggerBundle\Services\CustomLogger('/my/app/dir');
还有一个小的特性是可以获取当前使用的日志文件的路径 - 原因是原始的 Monolog 不允许您这样做。
$logger->setLogger('my_log');
$loggerHandlers = $logger->getHandlers();
$primaryHandler = $loggerHandlers[0];
$filename = $primaryHandler->getUrl();
如果文件权限不足,此包不会抛出任何异常,但 Monolog 会 - 当您尝试执行类似 $logger->addInfo()
的操作时。
API
void CustomLogger::__construct(string $rootDir)
设置到 app/
目录的路径。
Monolog\Logger CustomLogger::setLogger(string $logName, string $extension = 'log', string $logDir = null)
第一个参数是日志文件名称,不包含路径和扩展名。如果第三个参数未提供,则目录默认为 Symfony2 的 /app/logs
,Symfony3 的 /var/logs
。
string CustomLogger::getLogfile(string $logName = null)
显示日志文件的完整路径 - 以防您忘记应该在何处。提供可选参数已弃用。
string StreamHandler::getLogDir()
显示日志文件的完整目录路径。应在调用 setLogger()
之后调用。