写在前面
今天没事研究了下,将日志文件写入mysql数据库,因为新公司用的数据库也是mysql,项目中需要将日志信息写入数据库,没办法,就研究了下。在使用过程中遇到一个很蛋疼的问题。最后解决了,郁闷了半天。这里做一下记录,以免再犯。
之前写个这方面的文章,关于配置信息,可参考我的这篇文章:Log4Net日志记录两种方式
解决办法
问题就出在我直接将log4net写入数据库的配置文件log4net.config直接复制过来在项目中使用了,当然是修改了连接字符串,提供程序等与mysql相关的配置。配置文件如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <!--Log4net Begin--> <log4net> <appender name="AdoNetAppender_MySql" type="log4net.Appender.ADONetAppender"> <bufferSize value="1" /> <connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" /> <connectionString value="server=127.0.0.1;user id=root;pwd=root;port=3306;pooling=True;database=cowork_db" providerName="MySql.Data.MySqlClient;" /> <commandText value="INSERT INTO coworkdocument_log (log_date,log_Thread,log_Level,log_Logger,log_Message,log_Exception) VALUES (@log_date, @log_Thread, @log_level, @log_Logger, @log_Message, @log_Exception)" /> <parameter> <parameterName value="@log_date" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> <parameter> <parameterName value="@log_Thread" /> <dbType value="String" /> <size value="100" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%thread" /> </layout> </parameter> <parameter> <parameterName value="@log_Level" /> <dbType value="String" /> <size value="100" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%level" /> </layout> </parameter> <parameter> <parameterName value="@log_Logger" /> <dbType value="String" /> <size value="100" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%logger" /> </layout> </parameter> <parameter> <parameterName value="@log_Message" /> <dbType value="String" /> <size value="1000" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message" /> </layout> </parameter> <parameter> <parameterName value="@log_Exception" /> <dbType value="String" /> <size value="4000" /> <layout type="log4net.Layout.ExceptionLayout" /> </parameter> </appender> <!-- setup the root category, add the appenders and set the default level --> <root> <level value="ALL"/> <appender-ref ref="AdoNetAppender_MySql"/> </root> </log4net> <!--Log4net End--> </configuration>
弄了很长时间,也不知道问题在哪儿,就是插不进数据,无语死了,最后,灵光一闪,将sql语句修改如下:
1 INSERT INTO coworkdocument_log (log_date,log_Thread,log_Level,log_Logger,log_Message,log_Exception) VALUES (@log_date, @log_Thread, @log_level, @log_Logger, @log_Message, @log_Exception)
与上篇文章的sqlserver的配置文件对比你会发现,我将字段的[]去掉了,估计是mysql不支持这种语法吧,去掉之后,问题得以解决,能不郁闷吗?