Automatic log communication (request and response) from RestSharp using Serilog.


Keywords
restsharp, serilog, autolog, log, seq, splunk, console, sink, core, framework, standard, auto, automatic, dotnet, dotnet-core, logger, logging, request, response, rest, serilog-enricher, serilog-extension
License
MIT
Install
Install-Package RestSharp.Serilog.Auto -Version 1.4.0

Documentation

Build Status NuGet Downloads NuGet Version Quality Gate Status Coverage

RestSharp.Serilog.Auto

Do you need log all communication made with RestSharp using your serilog configuration? Just install this package and register our client proxy for IRestClient.

IRestClient client = new RestClientAutolog("http://www.github.com");

Install via NuGet

PM> Install-Package RestSharp.Serilog.Auto

How to use

You can change error message, success message and logger configuration.

var loggerConfiguration = new LoggerConfiguration()
                .MinimumLevel.Debug()
                .Enrich.WithMachineName()
                .Enrich.WithProperty("Domain", "MyDomain")
                .Enrich.WithProperty("Application", "MyProject")
                .Enrich.FromLogContext()
                .WriteTo.Seq("http://localhost:5341")
                .WriteTo.Console();

var restClientAutologConfiguration = new RestClientAutologConfiguration()
{
    MessageTemplateForSuccess = "{Method} {Uri} responded {StatusCode}", 
    MessageTemplateForError = "{Method} {Uri} is not good! {ErrorMessage}", 
    LoggerConfiguration = loggerConfiguration
};

IRestClient client = new RestClientAutolog("http://www.github.com", restClientAutologConfiguration);

Serilog uses Log.Logger as global. If you setup this on your application Startup/Bootstrap, it's not needed change logger configuration.

Variables to use in message templates

Properties created like (...).Enrich.WithProperty("Application", "MyProject") can be used in templates.

Default variables:

  • Agent
  • ElapsedMilliseconds
  • Method
  • Url
  • Host
  • Path
  • Query
  • RequestBody
  • RequestHeaders
  • StatusCode
  • StatusDescription
  • ResponseStatus
  • ProtocolVersion
  • IsSuccessful
  • ErrorMessage
  • ErrorException
  • Content
  • ContentEncoding
  • ContentLength
  • ContentType
  • ResponseHeaders

Setup global max length for exception properties

Use env var to change default value

  • SERILOG_ERROR_MESSAGE_MAX_LENGTH default value 256;
  • SERILOG_ERROR_EXCEPTION_MAX_LENGTH default value 1024;

How can I contribute?

Please, refer to CONTRIBUTING

Found something strange or need a new feature?

Open a new Issue following our issue template ISSUE_TEMPLATE

Changelog

See in nuget version history

Did you like it? Please, make a donate :)

if you liked this project, please make a contribution and help to keep this and other initiatives, send me some Satochis.

BTC Wallet: 1G535x1rYdMo9CNdTGK3eG6XJddBHdaqfX

1G535x1rYdMo9CNdTGK3eG6XJddBHdaqfX