Quando togli il database che esegue il backup di nlog, niente viene registrato e sembra che NLog inghiotti il problema. C'è un modo per configurarlo per sollevare ed eccezione o almeno per accedere a un file di testo che la registrazione non è riuscita?Come forzare nlog a generare un'eccezione quando la registrazione al database fallisce?
Ecco quello che la mia configurazione assomiglia:
<?xml version="1.0" ?>
<nlog autoReload="true" throwExceptions="true" internalLogFile="${basedir}/App_Data/nlog.txt" internalLogLevel="Debug"
internalLogToConsole="true">
<targets>
<!--Useful for debugging-->
<target name="consolelog" type="ColoredConsole"
layout="${date:format=HH\:mm\:ss}|${level}|${stacktrace}|${message}" />
<target name="databaselog" type="Database">
<dbProvider>System.Data.SqlClient</dbProvider>
<!-- database connection parameters -->
<!-- alternatively you could provide a single 'connectionstring' parameter -->
<connectionString>Data Source=.\SQLEXPRESSZ;Initial Catalog=aspnetdb;Integrated Security=SSPI</connectionString>
<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);
</commandText>
<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>
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="databaselog" />
</rules>
</nlog>
1) Non ce l'ha, ma ha funzionato ... grazie anche se l'ho impostato su Copia sempre ora. 2) La registrazione funziona davvero bene, ma il mio problema è che se spengo il server SQL, NLog non genererà eccezioni o log da nessuna parte che non è riuscito a accedere ai database. Voglio essere in grado di catturare e gestire le eccezioni di NLog. – m0s