t3n / flow-log
提供多个 Logger 的 Flow Framework 小型软件包
Requires
- google/cloud-bigquery: 1.13.*
- neos/flow: ^7.0
This package is auto-updated.
Last update: 2024-09-23 16:43: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 可以是 stderr
或 stdout
。
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]);
ServiceContext
ℹ️ 如果您想在 BigQuery 中记录多个应用程序/环境(例如),则非常重要。
您还应设置 StackDriver 和 BigQueryLogger 所使用的 ServiceContext。
t3n: FlowLog: serviceContext: service: 'flow-app' version: 'master'