Contents
KissLog for Web applications¶
For web applications, KissLog creates and shares the same logger instance throughout the entire http request (connection).
Logger is resolved using Logger.Factory.Get()
factory method.
public class HomeController : Controller
{
public ActionResult Index()
{
var logger = Logger.Factory.Get();
logger.Trace("Hey there!");
return View();
}
}
Logger is flushed automatically at the end of the http request, hence there is no need to call Logger.NotifyListeners()
.
Http properties¶
For every request, KissLog captures all the http properties and saves them to logger.DataContainer.HttpProperties
container.
public class HomeController : Controller
{
public ActionResult Index()
{
var logger = Logger.Factory.Get();
// "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
string userAgent = logger.DataContainer.HttpProperties.Request.UserAgent;
// "63.69.127.254"
string remoteAddress = logger.DataContainer.HttpProperties.Request.RemoteAddress;
return View();
}
}
FlushLogArgs.HttpProperties
¶
All the collected http properties are passed to registered log listeners.
public class MongoDbListener : ILogListener
{
public void OnFlush(FlushLogArgs args)
{
// "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
string userAgent = args.HttpProperties.Request.UserAgent;
// 302
int statusCode = args.HttpProperties.Response.StatusCode;
}
// [...]
}
An example of all the HttpProperties
values:
{
"Request": {
"StartDateTime": "2021-11-17T08:57:27.3412868Z",
"Url": "http://localhost:61132/Home/Form?prop1=value",
"HttpMethod": "POST",
"UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",
"RemoteAddress": "63.69.127.254",
"HttpReferer": "http://localhost:61132/",
"SessionId": "0a6cea0a-8f2b-4f67-2fb4-d32e9ab54400",
"IsNewSession": false,
"IsAuthenticated": false,
"MachineName": "DESKTOP-AHFAE64",
"Properties": {
"Headers": [
{
"Key": "Accept", "Value": "text/html,application/xhtml+xml,application/xml"
}
],
"Cookies": [
{
"Key": ".AspNetCore.Session", "Value": "CfDJ8AMliS5YXGWNj+v111NDjMT"
}
],
"QueryString": [
{
"Key": "prop1", "Value": "value"
}
],
"FormData": [
{
"Key": "Email", "Value": "p.adams@example.com"
}
],
"ServerVariables": [
{
"Key": "SERVER_NAME", "Value": "localhost"
}
],
"Claims": [
{
"Key": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", "Value": "p.adams"
}
],
"InputStream": "{\n \"DocumentType\": \"pdf\",\n \"DocumentNumber\": \"31690\",\n \"ExpiryDate\": \"2022-11-16\" \n}"
}
},
"Response": {
"StatusCode": 302,
"EndDateTime": "2021-11-17T08:57:27.4024776Z",
"Properties": {
"Headers": [
{
"Key": "Location", "Value": "/"
}
],
"ContentLength": 0
}
}
}
For technical support, questions or any feedback, please feel free to send us a message and we will get back to you.