akunzai / log4j2-sendgrid-appender

Send log4j2 errors via SendGrid service

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

log4j2-sendgrid-appender

Build Status Code Coverage Download

Send log4j2 errors via SendGrid service

Requirements

  • Java 11 runtime
  • a SendGrid account with your API key

Installation

Gradle

dependencies {
    implementation 'com.github.akunzai:log4j2-sendgrid-appender:3.1.0'
}

Maven

<dependency>
    <groupId>com.github.akunzai</groupId>
    <artifactId>log4j2-sendgrid-appender</artifactId>
    <version>3.1.0</version>
</dependency>

Usage

General Usage

The following is the minimum configuration needed for log4j2.xml to send an error email

By default, logger events will be buffering with previous 512 messages and filtered by ThresholdFilter, formatted as HTML.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="30" status="WARN">
    <Appenders>
        <SendGrid name="SendGrid"
                  subject="Error Notification from ${sys:hostName}"
                  from="${env:LOG_MAIL_FROM}"
                  to="${env:LOG_MAIL_TO}"
                  apiKey="${env:SENDGRID_API_KEY}">
        </SendGrid>
    </Appenders>
    <Loggers>
        <Root Level="WARN">
            <AppenderRef ref="SendGrid"/>
        </Root>
    </Loggers>
</Configuration>

Sample Usage

Sending error message with throttling

The following configuration was throttled to send 1 error email in 1 hour by combine the ThresholdFilter and BurstFilter

rate = maxBurst/burstInterval = 1/3600 ~= 0.0002

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="30" status="WARN">
    <Appenders>
        <SendGrid name="SendGrid"
                  bufferSize="3"
                  subject="Error Notification from ${sys:hostName}"
                  from="${sys:LOG_MAIL_FROM:-${env:LOG_MAIL_FROM}}"
                  to="${sys:LOG_MAIL_TO:-${env:LOG_MAIL_TO}}"
                  apiKey="${env:SENDGRID_API_KEY}">
            <PatternLayout pattern="%date|%level|%logger|%msg%n%rEx{5}%n"/>
            <Filters>
                <ThresholdFilter level="ERROR"/>
                <BurstFilter level="ERROR" rate="0.0002" maxBurst="1"/>
            </Filters>
        </SendGrid>
    </Appenders>
    <Loggers>
        <Root Level="WARN">
            <AppenderRef ref="SendGrid"/>
        </Root>
    </Loggers>
</Configuration>

About

Send log4j2 errors via SendGrid service

License:Apache License 2.0


Languages

Language:Java 100.0%