stackify / log4php
Stackify 为 Apache log4php 提供日志和错误记录
Requires
- apache/log4php: ~2.2
- stackify/logger: ~1.3
This package is not auto-updated.
Last update: 2024-09-21 14:09:10 UTC
README
Stackify log4php Appender
Apache log4php 的 Appender,用于将日志消息和异常发送到 Stackify。支持 Apache log4php >= 2.2.0。
- 错误和日志概述: http://support.stackify.com/errors-and-logs-overview/
- 注册试用: http://www.stackify.com/sign-up/
安装
使用 composer require stackify/log4php
安装最新版本
使用 Linux Agent 安装
这是推荐的安装选项,提供最佳的日志性能。
<root> ... <appender_ref ref="stackifyAppender" /> </root> <appender name="stackifyAppender" class="\Stackify\Log\Log4php\Appender"> <param name="appName" value="application_name" /> <param name="environmentName" value="environment_name" /> </appender>
可选配置
日志服务器环境变量
- 可以将服务器环境变量添加到错误日志消息元数据中。注意:这会将所有系统环境变量记录下来;如果以这种方式存储敏感信息(如密码或密钥),请勿启用。
<param name="logServerVariables" value="true" />
不使用 Linux Agent 安装
此选项不需要安装 Stackify Agent,因为它直接发送数据到 Stackify 服务。它批量收集日志条目,使用 exec
函数调用 curl,并立即发送数据到后台 [exec('curl ... &')
]。这将对应用程序的性能产生最小的影响,但需要权限在 PHP 脚本内部调用 exec
,并且如果出现任何网络问题,可能会造成数据丢失。此传输方法在 Windows 上不可用。要配置 ExecTransport,您需要传递环境名称和 API 密钥(许可证密钥)
<root> ... <appender_ref ref="stackifyAppender" /> </root> <appender name="stackifyAppender" class="\Stackify\Log\Log4php\Appender"> <param name="appName" value="application_name" /> <param name="environmentName" value="environment_name" /> <param name="mode" value="exec" /> <param name="apiKey" value="api_key" /> </appender>
可选配置
代理
- ExecTransport 支持通过代理传输数据。使用 libcurl 格式 指定代理:<[协议://][用户:密码@]代理主机[:端口]>
<param name="proxy" value="https://55.88.22.11:3128" />
Curl 路径
- 对于 ExecTransport,可以指定
curl
目标路径。此选项默认设置为 'curl'。
<param name="curlPath" value="/usr/bin/curl" />
注意
如果可用,请将异常对象传递给记录器以获取更多错误详情
try { $db->connect(); catch (DbException $ex) { $logger->error('DB is not available', $ex); }
添加到 MDC 或 NDC 的所有数据都将自动捕获并附加到您的日志消息。此信息将以 JSON 数据的形式提供,并在 Stackify 中可搜索。
故障排除
如果传输不起作用,请尝试检查 vendor\stackify\logger\src\Stackify\debug\log.log
文件(如果它可供写入)。错误也记录到全局 PHP 错误日志。请注意,ExecTransport 不会产生任何错误,但您可以将它切换到调试模式
<param name="debug" value="1" />
其他配置
对于其他配置,您可以在 XML 或 PHP 文件配置中设置。有关其他选项的参考位于 stackify logger 存储库 Stackify PHP Logger - 配置设置
XML 配置
- 字符串应该是 JSON 字符串,并使用 HTML 编码(最终将改进这一点。)
// Sample PHP Config $config = array( 'Debug' => true, 'DebugLogPath' => '/path/to/log.log' ); // 1. Converting PHP array to JSON String // - String: {"Debug":true,"DebugLogPath":"/path/to/log.log"} $jsonString = json_encode($config); // 2. XML Encode the JSON String // - ' is replaced with ' // - " is replaced with " // - & is replaced with & // - < is replaced with < // - > is replaced with > // - Encoded String: {"Debug":true,"DebugLogPath":"/path/to/log.log"} // - Note: In case the string has new line ("\n") or a carriage return ("\r") character, you still need to escape it // - \n should be replaced with or 
 // - \r should be replaced with or 
 // - Reference: https://stackoverflow.com/a/29924176/14542233 $xmlEncode = htmlspecialchars($jsonString, ENT_XML1 | ENT_QUOTES, 'UTF-8'); // 3. Add it as a value on XML Configuration <param name="config" value="{"Debug":true,"DebugLogPath":"/path/to/log.log"}" />
PHP 配置
- 如果使用 PHP 配置,基本上需要在 Stackify Appender 设置下的
params
中添加config
属性
<?php return array( 'rootLogger' => array( 'appenders' => array('stackifyAppender'), ), 'appenders' => array( 'stackifyAppender' => array( 'class' => '\Stackify\Log\Log4php\Appender', 'params' => array( 'appName' => 'application-name', 'environmentName' => 'environment-name', // Additional configuration 'config' => array( 'Debug' => true, 'DebugLogPath' => 'logConfig.log' ) ) )
许可证
版权所有 2019 Stackify, LLC。
本软件依据Apache License,版本2.0(以下简称“许可证”)授权;除非遵守许可证规定,否则不得使用此文件。您可以在以下地址获取许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或经书面同意,否则在许可证下分发的软件按照“现状”基础分发,不提供任何形式的明示或暗示保证。有关许可证的权限和限制的具体语言,请参阅许可证。