log4net引用了Mysql.Data.dll,但是就是不能写到mysql数据库的解决办法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了log4net引用了Mysql.Data.dll,但是就是不能写到mysql数据库的解决办法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3711字,纯文字阅读大概需要6分钟。
内容图文
![log4net引用了Mysql.Data.dll,但是就是不能写到mysql数据库的解决办法](/upload/InfoBanner/zyjiaocheng/1182/e20b9a2aae40491b90a7f81f2f16742a.jpg)
这两天遇到log4net写日志到mysql数据库中,有时候在A项目中可以,有时候B项目就有问题,有时候测试环境没问题,到正式部署环境又出问题,经过两天的煎熬,终于理清楚了其中的头绪。
1.配置现状
config文件中 log4net配置节 :
<!--以下是log4net配置-->
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="AdoNetAppender" />
</root>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.8.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
<connectionString value="server=192.168.10;2database=userlogs;Uid=****;Pwd=****;" />
<commandText value="INSERT INTO logs(log_datetime,log_thread,log_level,log_logger,log_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>
</log4net>
项目引用的MySql.Data的版本号是:5.1.5.0
本机安装过:C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3
各位看官,在这种不堪的环境下,调用log4net写日志到mysql,不成功是理所当然的事儿!!!
2.原因分析:
项目启动后,根据配置节connectionType中指定的MySql.Data.dll的版本号,先在bin目录下寻找6.8.5.0的MySql.Data.dll,结果发现bin下没有,就去mysql安装驱动的地方C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3寻找,同样也没找到。
最后无法加载该版本的MySql.Data.dll,于是就出现了在调用写日志的时候,就写不成功了。怎样修改日志才能写入成功呢?
3.解决办法:
方法一:
修改<connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.8.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
为:<connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=5.1.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
那么,系统在加载MySql.Data.dll时,先在bin下寻找版本号为5.1.5.0的MySql.Data.dll。加载成功,故可以成功写入。
方法二:
修改<connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.8.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
为:<connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
那么,系统在加载MySql.Data.dll时,先在bin下寻找版本号为6.8.3.0的MySql.Data.dll,没有找到,那么去系统的安装目录下找,结果找到,加载成功,故可以成功写入。
方法三:
找到版本为6.8.5.0的MySql.Data.dll,然后项目直接引用版本号为6.8.5.0的MySql.Data.dll。也可以成功。
综合以上三种方法,最推荐的是项目引用的Dll版本和config文件中log4net的connectionType 节指定的版本一致,就算部署环境变化,log4net写日志到mysql数据库也能正常的工作。
同时注意:
项目的版本最好和mysql.data.dll的运行时版本一致,都是基于2.0,3.5或者都是4.0,4.5。
原文:http://www.cnblogs.com/wangqiideal/p/4692651.html
内容总结
以上是互联网集市为您收集整理的log4net引用了Mysql.Data.dll,但是就是不能写到mysql数据库的解决办法全部内容,希望文章能够帮你解决log4net引用了Mysql.Data.dll,但是就是不能写到mysql数据库的解决办法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。