承接 aubes/ecs-logging-bundle 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

aubes/ecs-logging-bundle

最新稳定版本:v3.1.1

Composer 安装命令:

composer require aubes/ecs-logging-bundle

包简介

Symfony bundle providing the Ecs log format

README 文档

README

CI Latest Stable Version License PHP Version

A Symfony bundle that formats Monolog logs as Elastic Common Schema (ECS) NDJSON, ready to be ingested by Elasticsearch and visualised in Kibana without any index mapping configuration.

Built on top of elastic/ecs-logging.

What's included

Component Description
EcsFormatter Produces ECS-compliant NDJSON (log.level lowercase, ecs.version and tags configurable)
ServiceProcessor Injects static service.* metadata (name, version, id…) into every record
ErrorProcessor Converts a \Throwable in context to ECS error.* fields. map_exception_key also catches Symfony's native exceptions
TracingProcessor Maps tracing data to ECS trace.id, transaction.id, span.id (supports manual arrays and OpenTelemetry flat keys)
CorrelationIdProcessor Maps a correlation ID from Monolog extra to ECS labels.correlation_id or trace.id
UserProcessor Injects the authenticated user as ECS user.* via a customisable provider
HttpRequestProcessor Injects ECS http.*, url.*, and optionally client.ip from the current request
HostProcessor Injects static ECS host.* fields resolved once at boot time
AutoLabelProcessor Removes non-ECS context keys to protect the ECS namespace, optionally moving them into labels

Notable defaults

  • Sensitive fields opt-inclient.ip, url.query, http.request.referrer, and user.* (PII — see UserProcessor) are disabled by default
  • FrankenPHP worker mode — stateful processors implement ResetInterface
  • ECS namespace protectionAutoLabelProcessor prevents non-ECS fields from polluting root-level keys
  • ECS 8.x and 9.xecs.version defaults to 9.3.0, configurable per deployment

Output example

{
    "@timestamp": "2025-03-21T10:00:00.000000+00:00",
    "message": "Payment failed",
    "ecs.version": "9.3.0",
    "log": {
        "level": "error",
        "logger": "app"
    },
    "service": {
        "name": "checkout",
        "version": "1.4.2"
    },
    "error": {
        "type": "RuntimeException",
        "message": "Gateway timeout",
        "code": "504"
    },
    "trace": {
      "id": "123abc123abc123abc123abc123abc12"
    },
    "user": {
      "name": "alice"
    },
    "http": {
        "request": {
            "method": "POST",
            "mime_type": "application/json"
        },
        "version": "1.1"
    },
    "url": {
        "path": "/checkout/pay",
        "scheme": "https",
        "domain": "shop.example.com"
    }
}

Compatibility

  • PHP >= 8.2
  • Symfony 6.4 | 7.4 | 8.0 — LTS versions only
  • Monolog 3.x
  • FrankenPHP (worker mode)
  • ECS 8.x and 9.x

Installation

composer require aubes/ecs-logging-bundle

Quick start

1. Configure the formatter in Monolog:

# config/packages/monolog.yaml
monolog:
    handlers:
        main:
            type: stream
            path: "%kernel.logs_dir%/%kernel.environment%.log"
            level: info
            formatter: 'monolog.formatter.ecs'

2. Enable the bundle and configure at least one processor:

# config/packages/ecs_logging.yaml
ecs_logging:
    monolog:
        handlers: ['main']

    processor:
        service:
            enabled: true
            name: 'my-app'
            version: '%env(string:APP_VERSION)%'

Documentation

统计信息

  • 总下载量: 495
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 5
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-05-01