项目信息: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)" />

总结:没能开启内部调试导致错误不能排查是这次配置的最大阻碍,一旦解决了这个问题,后来出现什么问题后就可以直接找到问题的根源,从而快速解决。

打完收工!!!!

最新文章

  1. 进度条投票-W
  2. [UWP]使用AdaptiveTrigger实现自适应布局
  3. Yii源码阅读笔记(三十)
  4. js 读取 地址栏参数 转
  5. Android 自定义Application
  6. web工程目录结构
  7. nginx 负载均衡集群解决方案 healthcheck_nginx_upstreams (一)
  8. 保存恢复临时信-Android 中使用onSaveInstanceState和onRestoreInstanceState
  9. sql深入理解
  10. Invoke与BeginInvoke
  11. Android中将Bitmap对象以PNG格式保存在内部存储中
  12. Apache+php+mysql+phpadmin搭建
  13. SpringMVC Spring MyBatis整合配置文件
  14. MongoDB实战性能优化
  15. 图解Windows下 GIT GUI 使用教程
  16. mysql中的用法 count group by having
  17. About the Cron Expression
  18. mongodb 学习1
  19. Spark运行模式概述
  20. StringUtils学习

热门文章

  1. ASP.NET MVC4简单使用ELMAH记录系统日志
  2. Chrome新的语言API,让您的浏览器说话
  3. 如何使用ssh
  4. Visual Studio 2012设置Jquery/Javascript智能提示
  5. VS2013提示error C4996: &#39;strcat&#39;: This function or variable may be unsafe. Consider using strcat_s instead.
  6. 二度云抢先成为首批中国工信部(.vip/.xyz/.club)域名注册管理机构
  7. USACO 3.4 American Heritage
  8. R和python连接SQL sever 数据库操作
  9. 关于ueditor1.4.2 与Jquery 验证同时使用失效
  10. 离线安装gcc(CentOS7)