Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

github.com/misho-kr/logrus-hooks

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/misho-kr/logrus-hooks

  • v1.0.0
  • Source
  • Go
  • Socket score

Version published
Created
Source

Logrus Hooks

Logrus is a popular structured logger that allows to add hooks that are invoked for every message. These hooks can be used to send the messages to remote tracking and reporting system. Things may go wrong when talking to remote systems, like delays and errors.

The hooks from this package are decorators that help to deal with:

  • Transient errors
  • Excessive logging messages
  • Slow transmission times

Setup

The examples will use the syslog hook to send messages to syslog daemon. The setup looks like this:

import (
  "log/syslog"

  "github.com/misho-kr/logrus-hooks"
  "github.com/sirupsen/logrus"
  lSyslog "github.com/sirupsen/logrus/hooks/syslog"
)

func init() {

	// create a hook to be added to an instance of logger
	hook, err := NewSyslogHook("udp", "server.fqdn:514", syslog.LOG_DEBUG, "")
}

From here additional hooks can be added for enhanced logging functionality.

Retry with backoff

Prevent transient errors from procesing the log messages with retries

log.AddHook(RetryHook(
	hook,
	100 * time.Millisecond,  // delay between retries
	hooks.Retries(3),        // retry 3 times
	hooks.FactorPct(100),    // increase delay by 100% between retries
	hooks.JitterPct(10),     // jitter of 10% to the delay between retries
))

Rate limits

Put a cap on the number of logging messages per time interval

log.AddHook(RateLimitHook(
	hook,
	hooks.PerSecond(10),     // 10 messages per second
	hooks.Burst(20),         // burst of 20 messages allowed
))

Asynchronous execution

Fire the hook in separate goroutine to avoid blocking the logger and main application

log.AddHook(AsyncHook(
	hook,
	hooks.Senders(10),       // 10 goroutines to send messages
	hooks.BoostSenders(20),  // up to 20 additional goroutines when needed 
))

FAQs

Package last updated on 26 Jun 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc