Skip to content

ThiagoBarradas/nancy-serilog

Repository files navigation

Build Status NuGet Downloads NuGet Version Quality Gate Status Coverage

Nancy.Serilog.Simple

Serilog logger for Nancy web applications. Handler request, response and exceptions.

Install via NuGet

PM> Install-Package Nancy.Serilog.Simple

Sample

Configure service in statup

// Startup.cs

public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
    loggerFactory.AddSerilog();
}

Resolve dependency and setup pipelines

// Bootstrapper.cs

protected override void ConfigureApplicationContainer(TinyIoCContainer container)
{
    var jsonSerializerSettings = new JsonSerializerSettings
    {
    	ContractResolver = new CamelCasePropertyNamesContractResolver()
    };

    container.Register<JsonSerializerSettings>(jsonSerializerSettings);
    container.Register<ICommunicationLogger, CommunicationLogger>().AsSingleton();
    
    base.ConfigureApplicationContainer(container);
}

protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
{
	// you must setup logger pipeline in application startup
	pipelines.AddLogPipelines(container); 
}

Ready! That way all request/response will be sended to serilog.

You can custom information title / error title and Serilog Logger using NancySerilogConfiguration in constructor. By default, global serilog logger will be used.

You can disable logging on success using DisableSerilogExtension in your action:

public object Home()
{
	this.DisableLogging();
	...
}

Additional Property

context.Items["NancySerilogAdditionalInfo"] = new AdditionalInfo
{
    Data = new Dictionary<string, object>
    {
        { "SomeProperty", "HERE_SOMEPROPERTY" }
    }
};

Properties

  • RequestBody
  • Method
  • Path
  • Host
  • Port
  • Url
  • QueryString
  • Query
  • RequestHeaders
  • Ip
  • IsSuccessful
  • StatusCode
  • StatusDescription
  • StatusCodeFamily
  • ProtocolVersion
  • ErrorException
  • ErrorMessage
  • ResponseContent
  • ContentType
  • ContentLength
  • ResponseHeaders
  • ElapsedMilliseconds
  • RequestKey

You can use this propeties with serilog log context to build log messages. HTTP {Method} {Path} {...}.

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