Coder Social home page Coder Social logo

log4j-slack-appender's Introduction

SlackAppender

SlackAppender is a Log4j Appender for routing log messages to Slack.

Requirements

Configuration

In order to use the SlackAppender, SlackAppender.jar needs to be added to the classpath of the Java application for which it is being used and Log4j should be configured to use the SlackAppender.

Adding SlackAppender.jar to the classpath:

The SlackAppender.jar can be dowloaded from the releases section. Only the dowload of SlackAppender.jar is required. The downloaded SlackAppender.jar needs to be put on the classpath of the Java application that is to use the Slack Appender.

ADDING SlackAppender.jar TO THE CLASSPATH FOR SERVOY USERS:

When deploying your Servoy solution using WAR deployment, the SlackAppender.jar can be added to application_server/lib in the Servoy Developer installation from where the WAR export is made.

When using a regular Servoy Application Server for deploying your solution, Servoy has a classpath where each library is specified specifically. Just adding SlackAppender.jar to the application_server/lib folder is not sufficient. A good option to add SlackAppender.jar to the classpath would be adding a subfolder called 'extra' to the application_server/lib folder and placing the SlackAppender.jar into this newly created folder. Once this is done, the classpath needs to be edited to include this new folder:

  • When using the Service Wrapper, open /application_server/service/wrapper.conf in a text editor and add wrapper.java.classpath.xx=lib\extra\SlackAppender.jar, replacing xx with an appropriate incremental number (based in the already existing wrapper.java.classpath.xx entries)
  • When not using the Service Wrapper, the classpath is located in application_server/servoy_server.bat/sh: open this file in a text editor and add lib/extra/* to the classpath (making sure to use a semi-colon to properly separate the new entry form the existing entries)

If you'd like a cleaner way to include the Slack appender in your Servoy Application Server, please vote for: Provide a way to include extra JARs in the Servoy app server, without having to modify Servoy's .bat/.sh files in the Servoy Support system

Configuring Log4j to utilize the Slack Appender

After adding SlackAppender.jar to the classpath, Log4j needs to be configured to correctly connect to Slack and route logmessages to it. Appenders for Log4j are configured using their className and the className for the Slack Appender is com.tod.utils.logging.SlackAppender.

Besides generic appender configuration options, the Slack Appender comes with the following additional configuration options:

  • Url (mandatory): the url provided by slack when setting up an Incoming Webhook in Slack
  • UserName: Overrides the userName configured in the Incoming Webhook in Slack
  • Channel: Overrides the channel configured in the Incoming Webhook in Slack
  • Emoji: Overrides the emoji configured in the Incoming Webhook in Slack

Log4j has several ways it can be configured, one of them being through a .properties file. Below an example of such a configuration, which routes only ERROR level logmessages to Slack:

log4j.appender.slack=com.tod.utils.logging.SlackAppender
log4j.appender.slack.Threshold=ERROR
log4j.appender.slack.Url=https\://hooks.slack.com/services/xxxxxxxx/xxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxx
log4j.appender.slack.UserName=Servoy
log4j.appender.slack.Channel=UAT

The Slack Appender also needs to be added to a logger, for example the root logger:

log4j.rootCategory=WARN, console, slack

Note that the Slack Appender can just be added to the list of any existing appenders on the logger, as in the example above where console is an existing appender.

๐Ÿ’ก If there are specific messages that should not be send to Slack, a Log4j Filter can be used to filter them out. For example, to filter out all messages related to column names being too long, also add the following to the .properties file:

log4j.appender.slack.filter.1=org.apache.log4j.varia.StringMatchFilter
log4j.appender.slack.filter.1.AcceptOnMatch=false
log4j.appender.slack.filter.1.StringToMatch=is too long (>30 chars) -- this is not supported by all databases

Feature Requests & Bugs

Found a bug or would like to see a new feature implemented? Raise an issue in the Issue Tracker

Contributing

Eager to fix a bug or introduce a new feature? Clone the repository and issue a pull request

License

SlackAppender is licensed under MIT License

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.