I am currently trying to implement a logging system for my ASP.Net application similar to this where Elmah is used to catch all of the .NET Uncaught Exceptions that happen and log them to a SQL Database, with NLog being used for the more lightweight Debug() and Info() calls that will also be logged to a SQL Server. In addition to this I wanted to add JSNLog so that I could send all my Javascript Debug/Info/Errors etc to NLog for storing in the SQL Database too.
I have installed Elmah via the NuGet Package and made the necessary changes to my web.config
<elmah>
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ErrorLog"/>
<security allowRemoteAccess="false" />
</elmah>
<connectionStrings>
<add
name="ErrorLog"
connectionString="ConnectionStringGoesHere"
providerName="System.Data.SqlClient" />
</connectionStrings>
And I can confirm that Elmah logs to my SQL Database correctly.
I have also installed the NLog
and NLog.Config
NuGet packages, along with adding two nodes to the NLog.config
file
<targets>
<!-- database target -->
<target name="database"
xsi:type="Database"
connectionStringName="NLog"
commandText="exec dbo.InsertLog
@level,
@callSite,
@type,
@message,
@stackTrace,
@innerException,
@additionalInfo">
<parameter name="@level" layout="${level}" />
<parameter name="@callSite" layout="${callsite}" />
<parameter name="@type" layout="${exception:format=type}" />
<parameter name="@message" layout="${exception:format=message}" />
<parameter name="@stackTrace" layout="${exception:format=stackTrace}" />
<parameter name="@innerException"
layout="${exception:format=:innerFormat=ShortType,Message,Method:MaxInnerExceptionLevel=1:InnerExceptionSeparator=}" />
<parameter name="@additionalInfo" layout="${message}" />
</target>
</targets>
<rules>
<!-- database logger -->
<logger levels="Error,Warn,Fatal" name="databaseLogger" writeTo="database"/>
</rules>
This has also been tested from my .NET application and it logs correctly to the SQL Database.
Now onto JSNLog. I have installed the JSNLog.NLog
NuGet package and added <%= JSNLog.JavascriptLogging.Configure() %>
to my .ASPX page as directed by the installation instructions.
However if I call JL().info("Testing From JS");
from my ASPX page, or even if I call a function that doesn't exist to produce an error, I do not see the log that should get sent to NLog stored in my SQL Database. JSNLog is definitely installed correctly as I get this added to my Console:
So it seems that JSNLog is not passing the log onto NLog? Is there something that I have missed in this installation?