nlog数据库只输出Debug,其余的怎么记录到数据库?

时间:2022-08-24 21:47:03
祝大家新年好!

nlog数据库只输出Debug,其余的怎么记录到数据库?

公司日志dll是C++写的。C#3.5可以用转换为4.0框架就用不了。估计是参数类型的变化吧。

对 PInvoke 函数“Hal!Hal.UMS.UNI.UNI::UMS_TransCard”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。

.Net框架改为3.5可用。虽然是C++非托管的库。为什么会这样暂时原因不明


于是开始百度log类。之前了解过log4net真的是太复杂。。。学了一下没用起来。
后来又发现nlog比较交单。于是开始学习。。。。


我想要把所有的等级全部记录到数据库。以后自己方便些查询语句筛选...
方便的话在指导下如何记录自定义的数据,列如我需要记录本机的IP地址。默认的layout没有。应该怎么做?
目前出现的问题就是,只有DEBUG的才会记录到数据库,其余的不会。是什么原因?不是说好的路由配置输出目标吗?

博客园
http://www.cnblogs.com/dflying/archive/2006/12/05/583071.html
官网
http://nlog-project.org/
github
https://github.com/nlog/NLog/wiki/Database-target


源码已经下载到了。。刚刚接触开源的这些玩意。 nlog数据库只输出Debug,其余的怎么记录到数据库?反正就是源码下载好了也编译不了。。。不会调试啊!!提示什么签名不对啊。。。我感觉一下解决不了。只能求大神帮忙互相学习了。

nlog数据库只输出Debug,其余的怎么记录到数据库?
nlog数据库只输出Debug,其余的怎么记录到数据库?

配置文件如下

<?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">
  <targets async="true">
    <target name="console" xsi:type="Console"
              layout="${date:format=yyyy\-MM\-dd HH\:mm\:ss.fff}|${level}|${message}|${machinename}|${stacktrace}|${exception:stacktrace}"/>
    <target name="file" xsi:type="File" fileName="${basedir}/file.txt"
            layout="${date:format=yyyy\-MM\-dd HH\:mm\:ss.fff}|${stacktrace}|${message}"/>
    <target xsi:type="database" name="db" >
      <commandText>
        Insert into [TVMNlog]
        (timeStamp, eventLevel, hostName, operationType, operationResult, stack)
        Values
        (@timestamp, @leveltest, @host, @operationType, @operationResult, @stack);
      </commandText>

      <parameter name="@timestamp" layout="${date:format=yyyy\-MM\-dd HH\:mm\:ss.fff} " />
      <parameter name="@leveltest" layout="${level}" />
      <parameter name="@host" layout="${machinename}" />
      <parameter name="@operationType" layout="${message}" />
      <parameter name="@operationResult" layout="${stacktrace}" />
      <parameter name="@stack" layout="${exception:stacktrace}" />
      <dbProvider>System.Data.SqlClient</dbProvider>
      <connectionString>Data Source=127.0.0.1;Initial Catalog=ApplicationManager;Persist Security Info=True;User ID=sa;Password=pass$$word$$;</connectionString>
    </target>
  </targets>
  <rules>
    <logger name="*" minlevel="Trace" writeTo="db,Console"/>
    <!--<logger name="*" minlevel="Trace" writeTo="db" />-->
    <!--<logger name="*" level="Fatal" writeTo="FatalMail" />
    <logger name="*" level="Error" writeTo="ErrorMail" />-->
  </rules>
</nlog>


代码如下
using System;
using System.Collections.Generic;
using System.Text;
using NLog;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Logger logger = LogManager.GetCurrentClassLogger();

            logger.Debug("why");
            logger.Trace("This is a Trace message");
            logger.Info("This is an Info message");
            logger.Warn("This is a Warn message");
            logger.Error("This is an Error message");
            logger.Fatal("This is a Fatal error message");
            logger.Debug("tes23456t");
            Console.WriteLine("OK");
            Console.ReadKey(); 
        }
    }

}
代码下载百度盘:
链接: http://pan.baidu.com/s/1jH3y80A 密码: zddv

3 个解决方案

#1


你看看源码的那几个方法是怎么处理的

#2


nlog数据库只输出Debug,其余的怎么记录到数据库?初八了。。上班了。有哪个哥哥来回答吗?

#3


问题已经解决。NLOG版本问题。最新版的DLL有问题。用旧的DLL就可以了。

#1


你看看源码的那几个方法是怎么处理的

#2


nlog数据库只输出Debug,其余的怎么记录到数据库?初八了。。上班了。有哪个哥哥来回答吗?

#3


问题已经解决。NLOG版本问题。最新版的DLL有问题。用旧的DLL就可以了。