NLog.Mongo
NLog.Mongo copied to clipboard
MongoDB Target for NLog
NLog.Mongo
Writes NLog messages to MongoDB.
Download
The NLog.Mongo library is available on nuget.org via package name NLog.Mongo.
To install NLog.Mongo, run the following command in the Package Manager Console
PM> Install-Package NLog.Mongo
More information about NuGet package avaliable at https://nuget.org/packages/NLog.Mongo
Development Builds
Development builds are available on the myget.org feed. A development build is promoted to the main NuGet feed when it's determined to be stable.
In your Package Manager settings add the following package source for development builds: http://www.myget.org/F/loresoft/
Configuration Syntax
<extensions>
<add assembly="NLog.Mongo"/>
</extensions>
<targets>
<target xsi:type="Mongo"
name="String"
connectionName="String"
connectionString="String"
collectionName="String"
cappedCollectionSize="Long"
cappedCollectionMaxItems="Long"
databaseName="String"
includeDefaults="Boolean">
<!-- repeated -->
<field name="String" layout="Layout" bsonType="Boolean|DateTime|Double|Int32|Int64|String" />
<!-- repeated -->
<property name="String" layout="Layout" bsonType="Boolean|DateTime|Double|Int32|Int64|String" />
</target>
</targets>
Parameters
General Options
name - Name of the target.
Connection Options
connectionName - The name of the connection string to get from the config file.
connectionString - Connection string. When provided, it overrides the values specified in connectionName.
databaseName - The name of the database, overrides connection string database.
Collection Options
collectionName - The name of the MongoDB collection to write logs to.
cappedCollectionSize - If the collection doesn't exist, it will be create as a capped collection with this max size.
cappedCollectionMaxItems - If the collection doesn't exist, it will be create as a capped collection with this max number of items. cappedCollectionSize must also be set when using this setting.
Document Options
includeDefaults - Specifies if the default document is created when writing to the collection. Defaults to true.
field - Specifies a root level document field. There can be multiple fields specified.
property - Specifies a dictionary property on the Properties field. There can be multiple properties specified.
includeEventProperties - Specifies if LogEventInfo Properties should be automatically included. Defaults to true.
Examples
Default Configuration with Extra Properties
NLog.config target
<target xsi:type="Mongo"
name="mongoDefault"
connectionString="mongodb://localhost/Logging"
collectionName="DefaultLog"
cappedCollectionSize="26214400">
<property name="ThreadID" layout="${threadid}" bsonType="Int32" />
<property name="ThreadName" layout="${threadname}" />
<property name="ProcessID" layout="${processid}" bsonType="Int32" />
<property name="ProcessName" layout="${processname:fullName=true}" />
<property name="UserName" layout="${windows-identity}" />
</target>
Default Output JSON
{
"_id" : ObjectId("5184219b545eb455aca34390"),
"Date" : ISODate("2013-05-03T20:44:11Z"),
"Level" : "Error",
"Logger" : "NLog.Mongo.ConsoleTest.Program",
"Message" : "Error reading file 'blah.txt'.",
"Exception" : {
"Message" : "Could not find file 'C:\\Projects\\github\\NLog.Mongo\\Source\\NLog.Mongo.ConsoleTest\\bin\\Debug\\blah.txt'.",
"Text" : "System.IO.FileNotFoundException: Could not find file 'C:\\Projects\\github\\NLog.Mongo\\Source\\NLog.Mongo.ConsoleTest\\bin\\Debug\\blah.txt' ...",
"Type" : "System.IO.FileNotFoundException",
"Source" : "mscorlib",
"MethodName" : "WinIOError",
"ModuleName" : "mscorlib",
"ModuleVersion" : "4.0.0.0"
},
"Properties" : {
"ThreadID" : 10,
"ProcessID" : 21932,
"ProcessName" : "C:\\Projects\\github\\NLog.Mongo\\Source\\NLog.Mongo.ConsoleTest\\bin\\Debug\\NLog.Mongo.ConsoleTest.exe",
"UserName" : "pwelter",
"Test" : "ErrorWrite",
"CallerMemberName" : "Main",
"CallerFilePath" : "c:\\Projects\\github\\NLog.Mongo\\Source\\NLog.Mongo.ConsoleTest\\Program.cs",
"CallerLineNumber" : "43"
}
}
Custom Document Fields
NLog.config target
<target xsi:type="Mongo"
name="mongoCustom"
includeDefaults="false"
connectionString="mongodb://localhost"
collectionName="CustomLog"
databaseName="Logging"
cappedCollectionSize="26214400">
<field name="Date" layout="${date}" bsonType="DateTime" />
<field name="Level" layout="${level}"/>
<field name="Message" layout="${message}" />
<field name="Logger" layout="${logger}"/>
<field name="Exception" layout="${exception:format=tostring}" />
<field name="ThreadID" layout="${threadid}" bsonType="Int32" />
<field name="ThreadName" layout="${threadname}" />
<field name="ProcessID" layout="${processid}" bsonType="Int32" />
<field name="ProcessName" layout="${processname:fullName=true}" />
<field name="UserName" layout="${windows-identity}" />
</target>
Custom Document Fields JSON output
{
"_id" : ObjectId("5187abc2545eb467ecce9184"),
"Date" : ISODate("2015-02-02T17:31:20.728Z"),
"Level" : "Debug",
"Message" : "Sample debug message",
"Logger" : "NLog.Mongo.ConsoleTest.Program",
"ThreadID" : 9,
"ProcessID" : 26604,
"ProcessName" : "C:\\Projects\\github\\NLog.Mongo\\Source\\NLog.Mongo.ConsoleTest\\bin\\Debug\\v4.5\\NLog.Mongo.ConsoleTest.exe",
"UserName" : "pwelter"
}
Custom Object Properties
NLog.config target
<target xsi:type="Mongo"
name="mongoCustomJsonProperties"
includeEventProperties="false"
connectionString="mongodb://localhost"
collectionName="CustomLog"
databaseName="Logging"
cappedCollectionSize="26214400">
<field name="Properties" bsonType="Object">
<layout type="JsonLayout" includeAllProperties="true" includeMdlc="true" maxRecursionLimit="10">
<attribute name="ThreadID" layout="${threadid}" encode="false" />
<attribute name="ProcessID" layout="${processid}" encode="false" />
<attribute name="ProcessName" layout="${processname:fullName=false}" />
</layout>
</field>
</target>
Custom Object Properties JSON output
{
"_id" : ObjectId("5184219b545eb455aca34390"),
"Date" : ISODate("2013-05-03T20:44:11Z"),
"Level" : "Error",
"Logger" : "NLog.Mongo.ConsoleTest.Program",
"Message" : "Error reading file 'blah.txt'.",
"Exception" : {
"Message" : "Could not find file 'C:\\Projects\\github\\NLog.Mongo\\Source\\NLog.Mongo.ConsoleTest\\bin\\Debug\\blah.txt'.",
"Text" : "System.IO.FileNotFoundException: Could not find file 'C:\\Projects\\github\\NLog.Mongo\\Source\\NLog.Mongo.ConsoleTest\\bin\\Debug\\blah.txt' ...",
"Type" : "System.IO.FileNotFoundException",
"Source" : "mscorlib",
"MethodName" : "WinIOError",
"ModuleName" : "mscorlib",
"ModuleVersion" : "4.0.0.0"
},
"Properties" : {
"ThreadID" : 10,
"ProcessID" : 21932,
"ProcessName" : "NLog.Mongo.ConsoleTest.exe",
"Product": { "Name": "Foo", "Id": 42 }
}
}