06 Adding Custom Data
JP Toto edited this page Feb 12, 2016
·
4 revisions
Adding custom data to your messages is easy if you log messages with an Exception
class or a custom class that inherits from Exception
.
If you log messages using the method signature:
_log.Error("System Error", new Exception("Something terrible happened."));
it will cause the Exception{}
array to be populated in the Elasticsearch document. Since Exception
has a built in Data
property which is a dictionary that can be added to, you can create an Exception
instance and add custom properties to the dictionary:
// Log an exception object with custom fields in the Data property
Exception newException = new Exception("There was a system error");
newException.Data.Add("CustomProperty", "CustomPropertyValue");
newException.Data.Add("SystemUserID", "User43");
_log.Error("Something broke.", newException);
{
"_index": "log-2016.02.12",
"_type": "logEvent",
"_id": "AVLXHEwEJfnUYPcgkJ5r",
"_version": 1,
"_score": 1,
"_source": {
"timeStamp": "2016-02-12T20:11:41.5864254Z",
"message": "Something broke.",
"messageObject": {},
"exception": { <-- Exception Object
"Type": "System.Exception",
"Message": "There was a system error",
"HelpLink": null,
"Source": null,
"HResult": -2146233088,
"StackTrace": null,
"Data": {
"CustomProperty": "CustomPropertyValue", <-- Custom field data
"SystemUserID": "User43" <-- Custom field data
},
"InnerException": null
},
"loggerName": "log4net.ES.Example.Program",
"domain": "log4net.ES.Example.vshost.exe",
"identity": "",
"level": "ERROR",
"className": "log4net.ES.Example.Program",
"fileName": "C:\\Users\\jtoto\\projects\\log4net.ES.Example\\log4net.ES.Example\\Program.cs",
"lineNumber": "26",
"fullInfo": "log4net.ES.Example.Program.Main(C:\\Users\\jtoto\\projects\\log4net.ES.Example\\log4net.ES.Example\\Program.cs:26)",
"methodName": "Main",
"fix": "LocationInfo, UserName, Identity, Partial",
"properties": {
"log4net:Identity": "",
"log4net:UserName": "JToto",
"log4net:HostName": "JToto01",
"@timestamp": "2016-02-12T20:11:41.5864254Z"
},
"userName": "JToto",
"threadName": "9",
"hostName": "JTOTO01"
}
}
You can see this example in action in the sample application.