mvc log4net将日志写入数据库失败解决之道——开启内部调试
项目信息:spring mvc5 EF6
数据库:sql2008r2
log4net版本:1.2.10.0
第一天:
1.思路一:配了半天,一直无法写入数据库,网上搜了一大堆的资料,都没能解决,怀疑是项目的框架问题。新建了一个空的项目实验,不用Nuget获取,直接引用log4net.dll,配置一番之后结果没有问题!可以写入,将其移植过来,又不行了!!
2.思路二:开启log4net内部调试,可一直不能成功开启。
3.思路三:下载了log4net的源码加到项目中,调试发现问题所在,加进去以后发现调试一圈之后依然没有弹出任何错误,也没有发现加载数据库附着器。
好了,一天结束了!!
第二天(雾霾非常严重的一天):
痛定思痛,还是要开启内部调试,网上相关开启内部调试的文章很少,只有两篇,按照其配置一直不能成功(其实他们写的没错,只是太简略了!),无奈之下想到到log4net官网中找寻答案——阅读官方网址:http://logging.apache.org/log4net/release/faq.html 中开启的方式,在web.config添加了:
节点一:
<appSettings> <add key="log4net.Internal.Debug" value="true"/>
</appSettings>
节点二:
<configuration>
... <system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\tmp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics> ...
</configuration>
后即可调试。
调试中发现:在网上搜的ADONetAppender附着器中的数据执行命令有问题(改来改去的和我测试用的那个空项目的不一致了),如下:
有问题的命令:
<commandText value="INSERT INTO SystemLog ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
此节配置中, <commandText value="INSERT INTO SystemLog ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />命令的参数:@logger、@thread、@message和@exception与下面的参数名称不一致,在内部调试生成的文件中可以看到如下的提示信息:
log4net:ERROR [AdoNetAppender] Exception while writing to database
System.Data.SqlClient.SqlException (0x80131904): 必须声明标量变量 "@thread"。
无法预定义语句。
将其按照下面的参数名称改为一致后测试,即可。附上修改后的命令:
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @log_thread, @log_level, @log_logger, @log_message, @log_exception)" />
总结:没能开启内部调试导致错误不能排查是这次配置的最大阻碍,一旦解决了这个问题,后来出现什么问题后就可以直接找到问题的根源,从而快速解决。
打完收工!!!!
mvc log4net将日志写入数据库失败解决之道——开启内部调试的更多相关文章
- log4net 将日志写入数据库
asp.net利用log4net写入日志到SqlServer数据库,Log4net是一个开源的错误日志记录项目,易用性强,源自log4j,品质值得信赖. 下面就我的安装部署log4net到MS sql ...
- c#用log4Net将日志写入到Oracle数据库,并写入到文件中
原文:c#用log4Net将日志写入到Oracle数据库,并写入到文件中 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https:/ ...
- log4net将日志写入ElasticSearch
log4net将日志写入ElasticSearch https://www.cnblogs.com/huangxincheng/p/9120028.html 很多小步快跑的公司,开发人员多则3-4个, ...
- 【BUG】插入或者更新超过限制后写入数据库失败
Error Code: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your ...
- logback日志写入数据库(mysql)配置
如题 建议将日志级别设置为ERROR.这样可以避免存储过多的数据到数据中. 1 logback 配置文件(如下) <?xml version="1.0" encoding ...
- log4net 添加自定义日志到数据库
添加操作日志到数据库举例: (一)建立数据库的操作日志表,如下我建立了一个简单的日志表 (二)配置文件中的配置如下 <log4net> <!--错误日志记录数据库--> < ...
- mySql---logback日志写入数据库(mysql)配置
如题 建议将日志级别设置为ERROR.这样可以避免存储过多的数据到数据中. 1 logback 配置文件(如下) <?xml version="1.0" encoding ...
- 怎样借助log4j把日志写入数据库中
log4j是一个优秀的开源日志记录项目.我们不仅能够对输出的日志的格式自定义,还能够自定义日志输出的目的地,比方:屏幕.文本文件,数据 库,甚至能通过socket输出.本节使用MySQ ...
- C# 利用log4net 把日志写入到数据库表中
效果图: 1:第一步创建SQL表结构 CREATE TABLE [dbo].[LogDetails] ( [LogID] int NOT NULL IDENTITY(1,1) , [LogDat ...
随机推荐
- visio UML用例里面找不到include关系
今天用Microsoft Visio 2007画用例图时,发现visio UML用例里面找不到include关系,查到一个可行的解决办法: 1)创建一个UML用例图模板:打开Microsoft Vi ...
- Git命令行连Github与TortoiseGit 连Github区别
如果是用git 通过命令行的方式连接github,那么只需要通过命令 $ ssh-keygen -t rsa -C "your_email@youremail.com" 生成rsa ...
- Web Host下的URL路由
Web Host下的URL路由 ASP.NET Web API提供了一个独立于执行环境的抽象化的HTTP请求处理管道,而ASP.NET Web API自身的路由系统也不依赖于ASP.NET路由系统,所 ...
- hdu 4198 Quick out of the Harbour(BFS+优先队列)
题目链接:hdu4198 题目大意:求起点S到出口的最短花费,其中#为障碍物,无法通过,‘.’的花费为1 ,@的花费为d+1. 需注意起点S可能就是出口,因为没考虑到这个,导致WA很多次....... ...
- activity的android:name所指的Activity实现类的简写问题
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package=" ...
- 关于国产跨平台的开源游戏引擎LGame
声明: 本博客文章原创类别的均为个人原创,版权所有.转载请注明出处: http://blog.csdn.net/ml3947,另外本人的个人博客:http://www.wjfxgame.com. ...
- Data Guard组件等相关介绍
1.Data Guard组件介绍 Data Guard架构归类为3个主要的组件. Data Guard 重做传输服务 重做传输服务用来将主数据库生成的重做数据传输给备用数据库. Data Guar ...
- Android监听WebView滑动到底部
MainActivity如下: package cn.testwebview; import android.app.Activity; import android.graphics.Bitmap; ...
- sqlplus中显示sql执行计划和统计信息
31 ,32 , 33 ,34 keywords : oracle storage structure 最详细讲解: 1:doc 1 logical storage structure 2 ...
- NUTZ中处理系统未捕获异常
关键内容 mvc-chain.js ViewProcessor ai.setFailView(“redirect:/sysError.html”); log.error(this.trrowableT ...