Josh
Josh

Reputation: 1

NLog is not logging on Oracle database, Please how can I get it right

I want to log into Oracle database table using NLog but nothing gets logged. Below is NLog.config file am using. Please what am I doing wrongly?

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"    
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      throwConfigExceptions="true"
      internalLogLevel="info"
      internalLogFile="Logtxt.txt">
  <extensions>
    <add assembly="NLog.Web.AspNetCore"/>
  </extensions>
  <targets>
    <target name="database" xsi:type="Database" keepConnection="false" useTransactions="true"
        dbProvider="System.Data.OracleClient.OracleConnection,System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
        connectionString="Data Source=#####;User ID=######;password=******;Integrated Security=no;"
        commandText="insert into DBO_ERRORLOGS(LOGID,LEVEL,CALLSITE,TYPE,MESSAGE,STACKTRACE,INNEREXCEPTION,ADDITINALINFO,LOGGEDONDATE,USERNAME) values('',:LEVEL,:CALLSITE,:TYPE,:MESSAGE,:STACKTRACE,:INNEREXCEPTION,:ADDITIONALINFO,:DATE,:USERNAME)">
        <parameter name="LEVEL" layout="${Level}" />
        <parameter name="CALLSITE" layout="${Callsite}" />
        <parameter name="DATE" layout="${date}" />
        <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}" />
        <parameter name="USERNAME" layout="${identity}" />
    </target>
  </targets>
  <rules>
      <logger name="*" minlevel="Debug" writeTo="database" />
  </rules>
</nlog>

Upvotes: 0

Views: 339

Answers (1)

Julian
Julian

Reputation: 36790

Without an error message (see below how to find it), it's a bit guessing. But I think it's an issue you are sending all the parameters as strings. So add the dbType to the parameters, like:

<parameter name="DATE" layout="${date}" dbType="DateTime" />

For the actual error, you should check the internal log. It should be there! Check Logtxt.txt. See internalLogFile="Logtxt.txt". And you can't find it, change it to an absolute path, e.g. internalLogFile="C:\temp\Logtxt.txt"

Upvotes: 0

Related Questions