class CreateGoogleCloudLogger {
public function __invoke() {
$logging = new LoggingClient([
'projectId' => $projectId
]);
return $logging->psrLogger('app');
}
}
namespace App\Logging;
use Google\Cloud\Logging\LoggingClient;
use Monolog\Handler\PsrHandler;
use Monolog\Logger;
class CreateGoogleCloudLogger
{
public function __invoke(array $config)
{
$logName = config('app.name');
$logging = new LoggingClient([
'projectId' => config('logging.googleProjectId')
]);
$psrLogger = $logging->psrLogger($logName);
$handler = new PsrHandler($psrLogger);
return new Logger($logName, [$handler]);
}
}
然后在你的应用程序中,你可以随时...
Log::debug('This is a log message');
try {
$var = $this->doSomethingRisky();
} catch (\Exception $e) {
Log::warning('The risky thing failed but we will carry on anyway', ['message' => $e->getMessage()]);
$var = null;
}
3条答案
按热度按时间kupeojn61#
Lumen似乎和Laravel使用了相同的日志基础设施。默认情况下,它使用Monolog,这是一个PSR-3兼容的日志库,但我认为下面的代码可能也适用于Google云日志:
创建记录器工厂类:
更改
.env
文件:然后将其添加到
AppServiceProvider
寄存器函数中这应该使用工厂来创建PSR-3兼容的记录器。
dgenwo3n2#
我发现在
stack
通道(Laravel 9的默认配置)中使用时,接受的答案对我不起作用。这似乎是由于堆栈通道需要Monolog记录器,而不仅仅是PSR-3记录器。为了使其起作用,我复制了(或“从中获得灵感”)https://github.com/einnar82/google-stack-driver未对
app.php
进行任何更改。在
.env
中(注意,您需要在此处设置实际值)在
logging.php
中:在
app/Logging/CreateGoogleCloudLogger.php
中然后在你的应用程序中,你可以随时...
juzqafwq3#
由于Laravel使用Monolog Logger,所以你可以利用它。就在最近,Monolog确实增加了对Google云的支持。
下面的解释确实适用于Laravel和Lumen。
这只是一次配置更改
您只需要更改一个配置设置。
在.env文件中设置GoogleCloudLoggingFormatter,如下所示:
或者在
config/logging.php
中定义它记住选择stderr日志记录通道。如果您喜欢不同的通道名称,也可以重命名它。
Google云日志记录包
谷歌云日志包确实可以工作,但是它是你不需要的一个依赖。它没有错,但是为什么不保持它的简单呢?
Monolog支持Google版本2.8.0或3.2.0以上。
如果您使用的是旧版本,您可以编写一个自定义格式设置程序来实现相同的效果。
您需要更多信息吗?
就在几天前,我写了一篇关于它的文章。如果你想了解更多信息,欢迎阅读:https://jonassiewertsen.com/blog/laravel-logging-show-correct-severity-levels-on-the-google-cloud-platform