I have been using NLog for a while and I am very pleased with this. What I like most about NLog is that you can configure different log levels to write to different files and / or databases. This is a very powerful logging library.
To enter the database, you can use something like below in your configuration. This is similar to what I use in the company I work for.
<target xsi:type="Database" name="TestDatabaseLogging" connectionString="Data Source=127.0.0.1;Initial Catalog=NLog_Test;User ID=MyLogin;Password=MyPassword" dbDatabase="NLog_Test"> <commandText> insert into INNO_LOG ([createDate], [Origin], [LogLevel], [Message], [Exception], [StackTrace]) values (@createDate, @origin, @logLevel, @message, @exception, @stackTrace) </commandText> <parameter name="@createDate" layout="${date}"/> <parameter name="@origin" layout="${callsite}"/> <parameter name="@logLevel" layout="${level}"/> <parameter name="@message" layout="${message}"/> <parameter name="@exception" layout="${exception:format=Message,StackTrace}"/> <parameter name="@stackTrace" layout="${stacktrace}"/> </target>
You can use the rules section to register different levels for different files, see the example below;
<rules> <logger name="*" minlevel="Fatal" writeTo="mail" /> <logger name="*" minlevel="Error" writeTo="TestDatabaseLogging" /> <logger name="*" minlevel="Debug" writeTo="file-debug" /> <logger name="*" minlevel="Info" writeTo="file" /> <logger name="_Default" minlevel="Trace" writeTo="file-default" /> <logger name="TestClass" minlevel="Trace" writeTo="file-testclass" /> </rules>
EDIT: added a possible table layout for recording information.
Id | int CreateDate | datetime LogLevel | nvarchar Message | nvarchar(max) Exception | nvarchar(max) StackTrace | nvarchar(max) SourceUrl | nvarchar(255) UserId | uniqueidentifier OrderId | int
The above layout is just a rough idea. It completely depends on what you want to enter this table. Although you should try, if by default you can add additional parameters other than those used by NLog.
source share