fahl-design / log4php-slack-appender
一个为 maknz/slack 包构建的 log4php appender
1.2.0
2021-11-23 21:47 UTC
Requires
- php: ^7.1 || ^8.0
- ext-curl: *
- ext-json: *
- alek13/slack: ^1
- apache/log4php: ^2.3
Requires (Dev)
- codacy/coverage: 1.*
- codeception/codeception: ^4
- codeception/mockery-module: ^0
- codeception/module-asserts: ^1
- friendsofphp/php-cs-fixer: 3.*
- mockery/mockery: ^1.0
- monolog/monolog: 1.*
- roave/security-advisories: dev-latest
- symfony/var-dumper: ^4.0 || ^5.3
README
状态
主分支
开发分支
描述
此包允许您轻松优雅地将 Slack for PHP 作为 log4php appender 用于您的应用程序。阅读以下说明以进行设置。
需求
PHP >= 7.1
安装
您可以使用 Composer 包管理器安装此包。您可以在项目根目录中运行以下命令进行安装
composer require fahl-design/log4php-slack-appender
然后为要将消息发送到的每个 Slack 团队 创建一个入站 webhook。您需要 webhook URL(s) 以配置此包。
在获取到您的钩子 URL 后,将其添加到配置的端点
XML appender 配置示例
<log4php:configuration xmlns:log4php="https://logging.apache.ac.cn/log4php/" threshold="all"> <appender name="appender_slack" class="LoggerAppenderSlack"> <!-- get endpoint url from https://my.slack.com/services/new/incoming-webhook --> <param name="endpoint" value="https://hooks.slack.com/services/XXXXXXXXXXXXXXX/XXXXXXXXXXXXXXX/XXXXXXXXXXXXXXX" /> <param name="channel" value="#yourChannel" /> <param name="username" value="Log4php" /> <!-- Url or emoji--> <param name="icon" value=":do_not_litter:" /> <!-- flag to allow markdown (default 1) --> <param name="allowMarkdown" value="1" /> <!-- flag to send log message as slack attachment (default 1) --> <param name="asAttachment" value="1" /> </appender> <logger name="myLogger"> <appender_ref ref="appender_slack" /> </logger> </log4php:configuration>
php (config.php) appender 配置示例
<?php declare(strict_types=1); use WebProject\Log4php\Appender\Settings\Config; use WebProject\Log4php\Appender\Slack; return [ 'rootLogger' => [ 'level' => 'DEBUG', 'appenders' => ['slack_appender'], ], 'myLogger' => [ 'appenders' => ['slack_appender'], ], 'appenders' => [ 'slack_appender' => [ 'class' => Slack::class, 'params' => [ Config::KEY_ENDPOINT => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXX/XXXXXXXXXXXXXXX/XXXXXXXXXXXXXXX', Config::KEY_CHANNEL => '#general', Config::KEY_USERNAME => 'log4php', Config::KEY_ICON => ':ghost:', // emoji or an icon url Config::KEY_ALLOW_MARKDOWN => true, Config::KEY_MARKDOWN_IN_ATTACHMENTS_FIELDS => [ Config::VALUE_MARKDOWN_IN_ATTACHMENTS_PRETEXT, Config::VALUE_MARKDOWN_IN_ATTACHMENTS_TEXT, Config::VALUE_MARKDOWN_IN_ATTACHMENTS_TITLE, Config::VALUE_MARKDOWN_IN_ATTACHMENTS_FIELDS, Config::VALUE_MARKDOWN_IN_ATTACHMENTS_FALLBACK ], Config::KEY_AS_ATTACHMENT => true, Config::KEY_LINK_NAMES => true, Config::KEY_UNFURL_LINKS => false, Config::KEY_UNFURL_MEDIA => true, Config::KEY_SET_ICON_BY_LOG_LEVEL => true, Config::KEY_ADD_LOGGER_TO_MESSAGE => true ] ] ] ];
用法
查看示例(src/examples)
<?php declare(strict_types=1); /** * This script requires installation as composer package. */ require_once __DIR__.'/../../vendor/autoload.php'; try { if (!\is_file(__DIR__.'/../resources/config.local.php')) { throw new RuntimeException('local config file is missing'); } Logger::configure(include __DIR__.'/../resources/config.local.php'); Logger::getRootLogger()->fatal('root-logger-fatal-message'); $logger = Logger::getLogger('myLogger'); $logger->warn('warn-message @channel *WATTT*'); $logger = Logger::getLogger('myLogger'); $logger->debug('debug-message'); $logger->info('info-message'); $logger->warn('warn-message @channel *WATTT*'); $logger->error('error-message'); $logger->fatal('fatal-message'); } catch (\Throwable $e) { \print_r($e->getMessage()); \print_r($e->getTraceAsString()); exit(255); }