How to force nlog to throw an exception when the logging to database fails?

  1. Does NLog.config have the property "Copy to Output Directory" set as "Copy always"?
  2. I think you have wrong NLog.config file: you use elements instead of attributes within the target (documentation). Should be something like this:
<target 
  name="databaselog" 
  type="Database"
  dbProvider="System.Data.SqlClient"
  connectionString="Data Source=.\SQLEXPRESSZ;Initial Catalog=aspnetdb;Integrated Security=SSPI"
  commandText="insert into NLog_Error ([time_stamp],[level],[host],[type],[source],[logger],[message],[stacktrace],[allxml]) values(@time_stamp,@level,@host,@type,@source,@logger,@message,@stacktrace,@allxml);">
    <parameter name="@time_stamp" layout="${utc_date}" />
    <parameter name="@level" layout="${level}" />
    <parameter name="@host" layout="${machinename}" />
    <parameter name="@type" layout="${exception:format=type}" />
    <parameter name="@source" layout="${callsite:className=true:fileName=false:includeSourcePath=false:methodName=false}" />
    <parameter name="@logger" layout="${logger}" />
    <parameter name="@message" layout="${message}" />
    <parameter name="@stacktrace" layout="${exception:stacktrace}" />
    <parameter name="@allxml" layout="${web_variables}" />
</target>

You can force Nlog to throw exception when sql server is not reached by following

<nlog throwExceptions="true">
 ... your nlog config
</nlog>

More info here,

http://nlog-project.org/2010/09/05/new-exception-handling-rules-in-nlog-2-0.html

It's a new feature in v2.0 so you need v2.0.

It will not work in earlier versions.

Also checkout following configuration info

https://github.com/NLog/NLog/wiki/Logging-Troubleshooting

which allows Nlog to log it's own exceptions to a specified file.

Tags:

Nlog