fahl-design/log4php-slack-appender

A log4php appender build as wrapper for maknz/slack package

Maintainers

👁 Fahl-Design

Package info

github.com/Fahl-Design/log4php-slack-appender

pkg:composer/fahl-design/log4php-slack-appender

Statistics

Installs: 2 348

Dependents: 0

Suggesters: 0

Stars: 3

Open Issues: 2

1.2.0 2021-11-23 21:47 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT ff041fd527cc1f0c2510b37df992b6da0684fd8b

  • Benjamin Fahl <ben.woop@webproject.xyz>

logloggingphpslack


README

Status

👁 Dependency Status
👁 Latest Stable Version
👁 Total Downloads
👁 Latest Unstable Version
👁 License

👁 Monthly Downloads
👁 Daily Downloads

👁 Maintainability
👁 Test Coverage

👁 Codacy Badge
👁 Codacy Badge

👁 PHP-Eye
👁 PHP-Eye

Master Branch

👁 Build Status
👁 StyleCI
👁 codecov

Develop Branch

👁 Build Status
👁 StyleCI
👁 codecov

Description

This package allows you to use Slack for PHP easily and elegantly in your app as an log4php appender. Read the instructions below to get it set up.

Requirements

PHP >= 7.1

Installation

You can install the package using the Composer package manager. You can install it by running this command in your project root:

composer require fahl-design/log4php-slack-appender

Then create an incoming webhook for each Slack team you'd like to send messages to. You'll need the webhook URL(s) in order to configure this package.

After you got your hook url add it as endpoint to your configuration

XML appender config example

 <log4php:configuration xmlns:log4php="http://logging.apache.org/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 config example

<?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
 ]
 ]
 ]
 ];

Usage

Check example (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);
}