npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

electron-log-discord

v1.2.0

Published

An extension for electron-log that sends logs to Discord

Downloads

9

Readme

Electron Log Discord · codecov

This is a class-based plugin for Electron Log that allows you to easily send logs to a Discord channel using webhooks.

Never created webhooks in Discord? Check out the official article.

Installation

Install using npm:

npm install electron-log-discord

Usage

Import the required classes:

import ElectronLog from 'electron-log';
import DiscordTransport from 'electron-log-discord';

Create an instance of the DiscordTransport class, providing the webhook URL and the instance of ElectronLog that you want to use:

new DiscordTransport({
    webhook: 'https://discord.com/api/webhooks/...',
    electronLog: ElectronLog
});

This will automatically add the DiscordTransport to ElectronLog, so now, whenever you call a logging method (e.g. ElectronLog.info, ElectronLog.warn, ElectronLog.error), the message will be sent to the specified Discord channel.

Additionally, you can provide the username and avatar of the message author that will be displayed on the Discord channel. It's also possible to limit the log level that this transport will accept. All options are available below.

Options

The following options can be passed to DiscordTransport:

  • webhook: The Discord webhook URL to send the logs to. (required)
  • username: The username to use when sending the logs.
  • avatar: The avatar URL to use when sending the logs.
  • thumb: The thumb URL to use when sending the logs.
  • level: The log level to use when sending the logs. (default: 'silly')
  • electronLog: The ElectronLog instance to use for logging.

Examples

Sending logs only above a certain level

You can configure DiscordTransport to only send logs above a certain level by setting the level option. For example, to only send logs at the 'warn' level or above:

new DiscordTransport({
    webhook: 'https://discord.com/api/webhooks/...',
    level: 'warn', // error, warn, info, verbose, debug, silly, log
});

Customizing the appearance of the messages

You can customize the appearance of the messages by extending the DiscordTransport class and overriding the getPayload method. By default, getPayload returns an object with the message text and some metadata. You can modify this object to include additional fields or change the appearance of the message. For example, this modification will arrange the log in a way that the description comes after the level and datetime information.

class CustomDiscordTransport extends DiscordTransport {
    getPayload(message) {

        const embed = new EmbedBuilder()
            .setThumbnail(this.thumb)
            .setColor(this.colors[message.level])
            .addFields(
                {
                    name: 'Level',
                    value: message.level,
                    inline: true
                },
                {
                    name: 'DateTime',
                    value: message.date.toISOString(),
                    inline: true
                },
                {
                    name: 'Description',
                    value: this.transform(message),
                }
            );

        return {
            username: this.username,
            avatarURL: this.avatar,
            embeds: [embed]
        };
    }
}

new CustomDiscordTransport({
    webhook: 'https://discord.com/api/webhooks/...',
});

You can check the official Discord guide for more details and options about how webhooks work.