ELMAH port to Net.Core
Switch branches/tags
Nothing to show
Clone or download
Latest commit 7319554 Oct 9, 2018
Failed to load latest commit information.
ElmahCore.Demo add RiseError Oct 9, 2018
ElmahCore.MsSql Clean obj & bin Oct 9, 2018
ElmahCore.Mvc add RiseError Oct 9, 2018
ElmahCore Refactoring Oct 9, 2018
.gitignore add RiseError Oct 9, 2018
ElmahCore.sln Refactoring & upgrade to core 2.1 Aug 2, 2018
README.md Update README.md Oct 9, 2018


Using ElmahCore


Add nuget package elmahcore

Simple usage


1)	services.AddElmah() in ConfigureServices 
2)	app.UseElmah(); in Configure

Default elmah path ~/elmah.

Change URL path

services.AddElmah(options => option.Path = "you_path_here")

Restrict access to the Elmah url

services.AddElmah(options =>
        options.CheckPermissionAction = context => context.User.Identity.IsAuthenticated;

Change Error Log type

You can create your own error log, which will store errors anywhere.

    class MyErrorLog: ErrorLog
    //implement ErrorLog

This ErrorLogs available in board:

  • MemoryErrorLog – store errors in memory (by default)
  • XmlFileErrorLog – store errors in XML files
  • SqlErrorLog - store errors in MS SQL (add reference to ElmahCore.Sql)
services.AddElmah<XmlFileErrorLog>(options =>
    options.LogPath = "~/log"; // OR options.LogPath = "с:\errors";
services.AddElmah<SqlErrorLog>(options =>
    options.ConnectionString = "connection_string"; // DB structure see here: https://bitbucket.org/project-elmah/main/downloads/ELMAH-1.2-db-SQLServer.sql

Rise exception

public IActionResult Test()
    HttpContext.RiseError(new InvalidOperationException("Test"));

Using Notifiers

You can create your own notifiers by implement IErrorNotifier interface and add notifier to Elmah options:

services.AddElmah<XmlFileErrorLog>(options =>
    options.Path = @"errors";
    options.LogPath = "~/logs";
    options.Notifiers.Add(new ErrorMailNotifier("Email",emailOptions));

Each notifier must have unique name.

Using Filters

You can use Elmah XML filter configuration in separate file, create and add custom filters:

services.AddElmah<XmlFileErrorLog>(options =>
    options.FiltersConfig = "elmah.xml";
    options.Filters.Add(new MyFilter());

Custom filter must implement IErrorFilter. XML filter config example:

<?xml version="1.0" encoding="utf-8" ?>
			<notifier name="Email"/>
				<greater binding="HttpStatusCode" value="399" type="Int32" />
				<lesser  binding="HttpStatusCode" value="500" type="Int32" />

see more here

JavaScript filters not yet impemented :(

Add notifiers to errorFilter node if you do not want to send notifications Filtered errors will be logged, but will not be sent.