fittinq / logger-elasticsearch
该软件包最新版本(5.3.0)没有可用的许可证信息。
5.3.0
2024-09-22 11:02 UTC
Requires
- php: ^8.0
- elasticsearch/elasticsearch: ^v7.16.0
- psr/log: ^2.0.0
Requires (Dev)
- phpunit/phpunit: ^9.0
README
此库提供了一个框架,用于将日志记录到ElasticSearch。它有一些可能在第一眼看起来很奇怪的概念。
连接到ElasticSearch
首先,我们使用客户端构建器连接到ElasticSearch。您可以在service.yml中设置如下:
Fittinq\Logger\Elastic\ClientBuilder:
arguments:
- '%env(ELASTIC_LOGGER_HOST)%'
索引
ElasticSearch日志记录器必须将其消息写入给定的索引。由于您可能希望根据日期或字母顺序决定索引,我们引入了IndexResolver。
为了帮助您开始,我们添加了一个IndexResolver类,它简单地将索引命名为其构造函数中传递的任何名称。我们还提供了一个名为DateIndex的第二个解析器,它在给定名称后附加日期,格式为yyyymmdd。
您可以通过以下方式将这些添加到项目中:
Fittinq\Logger\Index\IndexResolver:
arguments:
- 'my_index'
或
Fittinq\Logger\Index\DateIndex:
arguments:
- 'prefix_%env(APP_ENV)%'
- '_Ymd'
上下文
当您记录消息时,您可能希望添加一些上下文。例如,记录消息的服务是哪个。您可以在记录消息的地方提供上下文,因为PSR-3支持此功能。然而,这可能不方便。您可能没有正确的数据。例如,您不希望每个记录消息的类都知道它们所在的服务名称。实际上,如果它来自另一个库,您甚至可能无法将其添加到类中。
我们使用ContextResolver来处理这个问题。您可以使用此功能设置每次记录消息时都添加到上下文中的逻辑。
Fittinq\Logger\Context\ContextResolver:
arguments:
- { arg1: 'myvalue', arg2: 'myvalue2' }
设置实际的日志记录器
然后我们将所有部件组合在一起
Fittinq\Logger\Logger\ElasticSearchLogger:
arguments:
- '@Fittinq\Logger\Elastic\ClientBuilder'
- '@Fittinq\Logger\Index\DateIndex'
- '@Fittinq\Logger\Context\ContextResolver'