定制 simplecomplex/json-log 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

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

simplecomplex/json-log

Composer 安装命令:

composer require simplecomplex/json-log

包简介

PSR-3 logger which files events as JSON.

README 文档

README

PSR-3 logger which files events as JSON.

Columns

Columns are configuration-wise split in groups of event-, request- and site-specific items.
For every column there's a JsonLogEvent method and a JSON bucket name (this lists the bucket names).

Several columns get skipped if their equivalent method returns empty string (that's the un-bold items).

Some column's must be set via the PSR-3 logger methods' $context argument.

All column values are string, except the code column.

Event
  • message
  • @timestamp: ISO-8601
  • message_id: fairly random ID, using site ID as salt
  • correlation_id: set via $context
  • subtype: set via $context, default component
  • level: emergency|alert|critical|error|warning|notice|info|debug
  • code: integer, set via $context; default 0
  • exception: PHP throwable, via $context; becomes class name
  • trunc: (original byte length/truncated length)
  • user: set via $context, or override JsonLogEvent::user() in extending class
  • session: set via $context, override JsonLogEvent::session() in extending class
Request
  • method: HTTP request method; cli if in CLI mode
  • request_uri: HTTP request URI; console arguments if in CLI mode
  • referer: HTTP referrer (sanitized)
  • client_ip: remote address, filtered for reverse_proxy_addresses
  • useragent: sanitized
Site
  • type: type setting; default webapp
  • host: $_SERVER['SERVER_NAME'] or empty
  • site_id: siteid setting
  • canonical: canonical setting
  • tags: tags setting

Settings

Are set via 'global' SimpleComplex Config, section lib_simplecomplex_jsonlog.

The simplest approach to that is to use environment variables, like
SetEnv lib_simplecomplex_jsonlog__threshold 7.
JsonLog constructor uses environment variables as fallback.

  • (int) threshold: less severe events are skipped (not logged); default 4 (~warning)
  • (str) siteid: defaults to name of directory above document root
  • (str) path: default /var/log/[apache2|httpd|nginx]/php-jsonlog
  • (int) truncate (Kb): truncate message so that event JSON doesn't exceed that length; default 32
  • (str) reverse_proxy_addresses: comma-separated list of IP addresses; default empty
  • (str) type: default webapp
  • (str) canonical: site identifier across multiple instances; default empty
  • (str) tags: comma-separated list; default empty
  • (str) reverse_proxy_header: default HTTP_X_FORWARDED_FOR
  • (str) file_time: set to empty or none to write to the same log file forever; default Ymd
  • (str) format: default|pretty|prettier; prettier is not valid JSON, but easier on the eyes

Recommended settings

All environments
  • siteid: use something more meaningful than the default
  • truncate: way higher, to like 256, if your system generates giant dumps or traces
Prod environment
  • reverse_proxy_addresses: look out for proxy servers
Dev/test environment
  • threshold: 7 (~debug)
  • path: make it closer to home if no log extractor (like Kibana+ElasticSearch) running
  • format: prettier if no log extractor running

CLI commands

# List all json-log commands and their help.
php cli.php json-log -h
# One command's help.
php cli.php json-log-xxx -h

# Check/enable JsonLog to write logs.
php cli.php json-log-committable

# Truncate current log file.
php cli.php json-log-truncate

Dependency injection container ID: logger

Recommendation: access (and thus instantiate) JsonLog via DI container ID 'logger'.
See SimpleComplex Utils Dependency.

Requirements

Suggestions

simplecomplex/json-log 适用场景与选型建议

simplecomplex/json-log 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 176 次下载、GitHub Stars 达 1, 最近一次更新时间为 2017 年 07 月 12 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「log」 「php」 「json」 「psr-3」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 simplecomplex/json-log 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 simplecomplex/json-log 我们能提供哪些服务?
定制开发 / 二次开发

基于 simplecomplex/json-log 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-07-12