t3n/flow-log

此软件包最新版本(1.0.5)的许可证信息不可用。

提供多个 Logger 的 Flow Framework 小型软件包

维护者

详细信息

github.com/t3n/FlowLog

源代码

问题

安装次数: 10,110

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 8

分支: 0

公开问题: 0

类型:neos-package

1.0.5 2024-07-23 16:09 UTC

README

此软件包添加了一些用于记录 Flow 消息的辅助功能。

🔧 正在开发中 🔧

ConsoleStorage

如果您想将异常记录到控制台,例如 stderr 或 stdout,那么 ConsoleStorage 就是您所需要的。它将所有可抛出内容直接以 JSON 格式记录到控制台。JSON 格式已被 Google Stackdriver 解析

要启用 ConsoleStorage,您需要像这样调整您的 Settings.yaml:

Neos:
  Flow:
    log:
      throwables:
        storageClass: t3n\FlowLog\ThrowableStorage\ConsoleStorage
        optionsByImplementation:
          't3n\FlowLog\ThrowableStorage\ConsoleStorage':
            streamName: 'stderr'

StreamName 可以是 stderrstdout

BigQueryLogger

BigQueryLogger 是一个 AbstractBackend,因此您可以使用它像正常的 Logger(如 FileBackend)一样。如果您想将日志记录到 BigQuery,以下是您的 3 步手册:

  • 配置 BigQuery(数据集、表、密钥文件)
  • 通过 PsrLoggerFactory 创建一个 BigQueryLogger
  • 通过 Objects.yaml 将您的自定义 BigQueryLogger 映射到实际使用它

1) 配置 BigQueryLogger

t3n:
  FlowLog:
    bigQuery:
      dataset: 't3n_flowlog'
      table: 'application_log'
      expirationMs: '7776000000' # 90 days
      keyFilePath: '/path/to/google/key.json'

ℹ️ 所有日志都将写入 BigQuery 的分区表中。这意味着您有一个“总”表,以及每天多个表。这些日表可以通过 expirationMs 自动删除。如果您想永久存储日志,只需忽略此设置并留空。

2) 创建您的 BigQueryLogger 实例

要实际使用 BigQueryLogger,您必须在 Settings.yaml 中定义自己的。重要的是 loggerName(“applicationXyImportLogger”)和内部名称 bigQueryLogger

bigQueryLogger 将用于步骤 3,loggerName 是 BigQuery 表的实际名称(每行插入)。

Neos:
  Flow:
    log:
      psr3:
        'Neos\Flow\Log\PsrLoggerFactory':
          bigQueryLogger:
            class: 't3n\FlowLog\Backend\BigQueryLogger'
            options:
              loggerName: 'applicationXyImportLogger'

您可以创建任意多的日志记录器。如果您想在 BigQuery 表中“分割”日志,这非常有用。例如,一个用于导入,一个用于用户请求等。

3) 通过 Objects.yaml 映射您的 BigQueryLogger

最后但同样重要的是,您必须定义您的 Logging-Factory 以使用 BigQueryLogger。

因此,像这样编辑您的 Objects.yaml

t3n\FlowLog\Command\ExampleCommandController: # <- adjust
  properties:
    logger:
      object:
        factoryObjectName: Neos\Flow\Log\PsrLoggerFactoryInterface
        factoryMethodName: get
        arguments:
          1:
            value: bigQueryLogger

现在您可以使用它了

/**
 * @var Psr\Log\LoggerInterface
 */
protected $logger;

....

$this->logger->log(LogLevel::INFO, 'First log entry.', ['test' => true]);

First entry in BigQuery - example

ServiceContext

ℹ️ 如果您想在 BigQuery 中记录多个应用程序/环境(例如),则非常重要。

您还应设置 StackDriver 和 BigQueryLogger 所使用的 ServiceContext。

t3n:
  FlowLog:
    serviceContext:
      service: 'flow-app'
      version: 'master'