Giter Site home page Giter Site logo

merodriguezblanco / exceptionnotification.core Goto Github PK

View Code? Open in Web Editor NEW
7.0 2.0 1.0 49 KB

NET Core package that provides notifiers for sending exception notifications when errors occur.

License: MIT License

C# 100.00%
dotnetcore exception-handling dotnet-core2

exceptionnotification.core's Introduction

ExceptionNotification.Core

NuGet Build Status

Overview

ExceptionNotification.Core is a NET core package that provides a set of notifiers for sending exception notifications when errors occur in your NET Core API. So far, the notifiers can deliver notifications only via e-mail, HipChat, and Slack. Its idea is based on the great ExceptionNotification gem that provides notifiers for Ruby applications.

WARNING: This plugin is in early development stage.

Requirements

  • NET Core 2.2 SDK

Installation

Install this package using the NuGet command line:

PM> Install-Package ExceptionNotification.Core -Version 1.6.0

Usage

ExceptionNotification.Core provides a middleware that catches exceptions for API requests. It also provides an interface to manually send notifications from a background process.

To setup the package you must add some credentials to your appsettings.<environment>.json file:

{
  "ExceptionNotification": {
    "Email": {
      "SmtpServer": "your.server.com",
      "SmtpPort": "25",
      "SmtpUser": "username",
      "SmtpPassword": "password",
      "EnableSsl": true,
      "UseCredentials": true,
      "Sender": {
        "DisplayName": "John Doe",
        "Address": "[email protected]"
      },
      "Recipients": [
        {
          "DisplayName": "Mary",
          "Address": "[email protected]"
        }
      ]
    },
    "Hipchat": {
      "RoomName": "Your Room",
      "ApiToken": "D12@....."
    },
    "Slack": {
      "WebhookUri": "https://...",
      "Channel": "#channel-name",
      "Username": "aperson"
    }
  }
}

Email

  • SmtpServer - required - Specifies the remote e-mail server address.
  • SmtpPort - required - Port used by the e-mail server.
  • SmtpUser - optional - If your e-mail server requires authentication, this setting specifies the username.
  • SmtpPassword - optional - If your e-mail server requires authentication, this setting specifies the password.
  • EnableSsl - optional.
  • UseCredentials- optional - Defaults to true. It can be set to false in case that you are using a relay server to send e-mails. In such case, you don't need to specify the SmtpUser and SmtpPassword.
  • Sender- required - Specifices who the notification message is from.
  • Recipients- required - List of recipients that will receive the notification message.

HipChat

  • RoomName - required - Specifies the HipcHat's room name where the notification message will be published to.
  • ApiToken- required - The API token that allows access to your HipChat account.

Slack Options

  • WebhookUri - required - The incoming Webhook URI on Slack.
  • Channel - optional - Channel's name in which the message will appear.
  • Username - optional - Username of the bot.

The package initialization should be setup in the Startup.cs:

public class Startup
{
  // ...

  public void Configure(IApplicationBuilder app)
  {
    // Bind options from appsettings file.
    var config = new ExceptionNotifierConfiguration();
    Configuration.Bind("ExceptionNotification", config);

    app.AddExceptionNotification(config);
  }
}

Take into account that the app.AddExceptionNotifier() call adds the ExceptionMiddleware middleware to your application under the covers. Since the order of middlewares matter, you would want to call this method at the very beginning of the Configure. Thus, the ExceptionMiddleware gets added before all others.

Background process notifications

In case that you want to send notifications from a background process, you can make use of the ExceptionNotifier interface:

try
{
  // ...
}
catch(Exception exception)
{
  ExceptionNotifier.NotifyException(exception);
}

TODO

  • This package currently provides e-mail, HipChat, and Slack notifiers. It would be ideal to implement other notifiers as well.
  • More testing is also needed.
  • Extend configuration to allow custom exception notification subject.
  • Add more detailed information about request and session to exception notification messages.

Contributing

We encourage you to contribute to ExceptionNotification.Core by following the CONTRIBUTING instructions.

License

This package is available as open source under the MIT license.

exceptionnotification.core's People

Contributors

merodriguezblanco avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

lanicon

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.