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

vbandplc 2016-02-04 05:39:04
祝大家新年好!



公司日志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


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




配置文件如下

<?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
...全文
285 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbandplc 2019-12-28
  • 打赏
  • 举报
回复
引用 4 楼 奔跑的酱油 的回复:
[quote=引用 3 楼 vbandplc 的回复:] 问题已经解决。NLOG版本问题。最新版的DLL有问题。用旧的DLL就可以了。
你用了一年解决这个问题?[/quote] 哈哈哈,对啊。小公司,有些奇葩的问题又没人指导,调试不出来,只能慢慢折腾。所以解决以后特别回来补充答案,有头有尾啊。避免后面还有小伙伴踩坑啊。
奔跑的酱油 2019-12-17
  • 打赏
  • 举报
回复
引用 3 楼 vbandplc 的回复:
问题已经解决。NLOG版本问题。最新版的DLL有问题。用旧的DLL就可以了。
你用了一年解决这个问题?
vbandplc 2017-02-07
  • 打赏
  • 举报
回复
问题已经解决。NLOG版本问题。最新版的DLL有问题。用旧的DLL就可以了。
vbandplc 2016-02-15
  • 打赏
  • 举报
回复
初八了。。上班了。有哪个哥哥来回答吗?
Justin-Liu 2016-02-04
  • 打赏
  • 举报
回复
你看看源码的那几个方法是怎么处理的

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧