Database odbc

2 messages Options
Embed this post
Permalink
spider

Database odbc

Reply Threaded More More options
Print post
Permalink
I have fallowing problem:
When i create logger programicaly like:
------------------------------------------------------------------------------------------------
DatabaseTarget target = new DatabaseTarget();
DatabaseParameterInfo param;

target.ConnectionString ="Dsn=PostgreSQL35W;database=..........";
target.DBProvider = "odbc";

target.CommandText = "insert into log_table(time_stamp,level,logger,message) values(?, ?, ?, ?);";

param = new DatabaseParameterInfo();
param.Name = "@time_stamp";
param.Layout = "${longdate}";
target.Parameters.Add(param);

param = new DatabaseParameterInfo();
param.Name = "@level";
param.Layout = "${level}";
target.Parameters.Add(param);

param = new DatabaseParameterInfo();
param.Name = "@logger";
param.Layout = "${logger}";
target.Parameters.Add(param);

param = new DatabaseParameterInfo();
param.Name = "@message";
param.Layout = "${message}";
target.Parameters.Add(param);

NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(target, LogLevel.Debug);
-----------------------------------------------------------------------------------------------

it works fine.

But when i try do it in config file:
-----------------------------------------------------------------------------------------------
<target name="database" type="Database"
            dbProvider="System.Data.Odbc.OdbcConnection"
            connectionString="Dsn=PostgreSQL35W;database=............."
            commandText="insert into log_table(time_stamp,level,logger,message) values(?, ?, ?, ?);">
      <parameter name="@time_stamp" layout="${longdate}"/>
      <parameter name="@level" layout="${level}"/>
      <parameter name="@logger" layout="${logger}"/>
      <parameter name="@message" layout="${message}"/>
    </target>
-----------------------------------------------------------------------------------------------

It doesn't work.

In log file form NLog i have:
-----------------------------------------------------------------------------------------------
Error Target exception: System.NullReferenceException: Object reference not set to an instance of an object.
   at NLog.Targets.DatabaseTarget.OpenConnection(LogEventInfo logEvent)
   at NLog.Targets.DatabaseTarget.Write(LogEventInfo logEvent)
   at NLog.LoggerImpl.Write(Type loggerType, TargetWithFilterChain targets, LogEventInfo logEvent, LogFactory factory)
-----------------------------------------------------------------------------------------------

In both cases i use it in this way:

Logger logger = LogManager.GetCurrentClassLogger();
logger.Debug("log message");
spider

Re: Database odbc

Reply Threaded More More options
Print post
Permalink
Problem is in:

dbProvider="System.Data.Odbc.OdbcConnection"

There must be  assembly-qualified name or simply "odbc" in this case.