-
Notifications
You must be signed in to change notification settings - Fork 4
Configuration
KissLog supports various configuration options using the KissLogConfiguration.Options
configuration object.
KissLogConfiguration.Options
.AppendExceptionDetails((Exception ex) =>
{
if (ex is DivideByZeroException zeroDivisionEx)
return ">>> Should check if the denominator is zero before dividing";
return null;
});
An example of using AppendExceptionDetails
to log Entity Framework validation exceptions can be found here.
- AppendExceptionDetails
- ShouldLogRequestHeader
- ShouldLogRequestCookie
- ShouldLogFormData
- ShouldLogServerVariable
- ShouldLogClaim
- ShouldLogInputStream
- ShouldLogResponseHeader
- ShouldLogFormData (for http request)
- ShouldLogInputStream (for http request)
- ShouldLogResponseBody
Gets executed for every logged "System.Exception". The result will be appended to the log message.
KissLogConfiguration.Options
.AppendExceptionDetails((Exception ex) =>
{
if(ex is DivideByZeroException zeroDivisionEx)
return "Should check if the denominator is zero before dividing";
return null;
});
Determines if a request header item should be captured by a log listener. Default true
.
KissLogConfiguration.Options
.ShouldLogRequestHeader((OptionsArgs.LogListenerHeaderArgs args) =>
{
if (args.HeaderName == "X-JWT-Token" && args.Listener is RequestLogsApiListener)
return false;
return true;
});
Determines if a cookie item should be captured by a log listener. Default true
.
KissLogConfiguration.Options
.ShouldLogRequestCookie((OptionsArgs.LogListenerCookieArgs args) =>
{
if (args.CookieName.StartsWith(".AspNetCore.") && args.Listener is RequestLogsApiListener)
return false;
return true;
});
Determines if a request form data item should be captured by a log listener. Default true
.
KissLogConfiguration.Options
.ShouldLogFormData((OptionsArgs.LogListenerFormDataArgs args) =>
{
if (args.FormDataName == "password" && args.Listener is RequestLogsApiListener)
return false;
return true;
});
Determines if a server variable item should be captured by a log listener. Default true
.
KissLogConfiguration.Options
.ShouldLogServerVariable((OptionsArgs.LogListenerServerVariableArgs args) =>
{
if (args.ServerVariableName == "HTTP_COOKIE" && args.Listener is RequestLogsApiListener)
return false;
return true;
});
Determines if a claim should be captured by a log listener. Default true
.
KissLogConfiguration.Options
.ShouldLogClaim((OptionsArgs.LogListenerClaimArgs args) =>
{
if (args.ClaimType == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/thumbprint" && args.Listener is RequestLogsApiListener)
return false;
return true;
});
Determines if request payload should be captured by a log listener. Default true
.
KissLogConfiguration.Options
.ShouldLogInputStream((OptionsArgs.LogListenerInputStreamArgs args) =>
{
if (args.HttpProperties.Request.Url.LocalPath == "/api/admin/setTokens" && args.Listener is RequestLogsApiListener)
return false;
return true;
});
Determines if a response header item should be captured by a log listener. Default true
.
KissLogConfiguration.Options
.ShouldLogResponseHeader((OptionsArgs.LogListenerHeaderArgs args) =>
{
if (args.HeaderName == "X-API-Key" && args.Listener is RequestLogsApiListener)
return false;
return true;
});
Determines if the request form data should be captured or not. Default true
.
KissLogConfiguration.Options
.ShouldLogFormData((HttpRequest httpRequest) =>
{
if (httpRequest.Url.LocalPath == "/Checkout/MakePayment")
return false;
return true;
});
Determines if the request payload should be captured or not. Default true
.
KissLogConfiguration.Options
.ShouldLogInputStream((HttpRequest httpRequest) =>
{
if (httpRequest.Url.LocalPath == "/api/html-to-pdf")
return false;
return true;
});
Determines if the response body should be captured or not. Default true
when Content-Type is "application/json".
KissLogConfiguration.Options
.ShouldLogResponseBody((HttpProperties httpProperties) =>
{
if (httpProperties.Response.StatusCode >= 400 && httpProperties.Request.Url.LocalPath == "/Checkout/Payment")
return true;
return true;
});
A real use-case example of using AppendExceptionDetails
handler:
using KissLog;
using KissLog.Listeners.FileListener;
using System;
namespace ConsoleApp_NetFramework
{
class Program
{
static void Main(string[] args)
{
KissLogConfiguration.Options
.AppendExceptionDetails((Exception ex) =>
{
if (ex is DivideByZeroException zeroDivisionEx)
return ">>> Should check if the denominator is zero before dividing";
return null;
});
KissLogConfiguration.Listeners
.Add(new LocalTextFileListener("logs", FlushTrigger.OnFlush));
var logger = new Logger(url: "Program/Main");
int a = 10, b = 0;
logger.Debug($"Preparing to divide {a} to {b}");
try
{
Console.WriteLine(a / b);
}
catch (Exception ex)
{
logger.Error(ex);
throw;
}
finally
{
Logger.NotifyListeners(logger);
}
}
}
}