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");