zoukankan      html  css  js  c++  java
  • log4net写入mysql

    原来一直做的是把日志输出成文件,现在要对日志查询统计,所以考虑把日志在数据库中保存起来,先用Access,感觉对时间类型支持不好,只能设置为string,后改为使用mysql(sql server、oracle也可以,但是太大),期间碰到几个问题。

    一、连接mysql需要下载使用MySql.Data库,但是引用了怎么都写不进去,后来查了资料才知道,不但要引用,还必须把库拷贝到应用程序目录;

    二、mysql中文乱码。谷歌的时候有说是log4net的原因,如Util下的Transform文件,跟踪的时候发现不输出xml,根本到不了此处,后面还是重新设置mysql配置文件才解决这个问题

    关于软件:log4net 1.2.11,mysql 5.5,Navicat for MySQL 10.0.11(管理MySql很好用的软件,类似SQL Server管理器)

    另外推荐Log2Console,这是一款可视化的查看日志的工具

    配置文件如下,其中注释的部分为输出xml格式

    appconfig
     1 <?xml version="1.0"?>
     2 <configuration>
     3   <configSections>
     4     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
     5   </configSections>
     6   <log4net>
     7     <root>
     8       <level value="ALL" />
     9       <appender-ref ref="AdoNetAppender" />
    10     </root>
    11     <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
    12       <bufferSize value="10" />
    13       <connectionType value="MySql.Data.MySqlClient.MySqlConnection,MySql.Data"/>
    14       <connectionString value="database=task;server=localhost;user id=root;password=;old syntax=yes"/>
    15       <commandText value="INSERT INTO Log (Date,Thread,Level,Logger,Message) VALUES (@log_date,@thread, @log_level, @logger, @message)" />
    16       <parameter>
    17         <parameterName value="@log_date" />
    18         <dbType value="String" />
    19         <size value="255" />
    20         <layout type="log4net.Layout.PatternLayout">
    21           <conversionPattern value="%date" />
    22         </layout>
    23         <dbType value="DateTime" />
    24         <layout type="log4net.Layout.RawTimeStampLayout"/>
    25       </parameter>
    26       <parameter>
    27         <parameterName value="@thread" />
    28         <dbType value="string" />
    29         <size value="255"/>
    30         <layout type="log4net.Layout.PatternLayout">
    31           <conversionPattern value="%thread" />
    32         </layout>
    33       </parameter>
    34       <parameter>
    35         <parameterName value="@log_level" />
    36         <dbType value="String" />
    37         <size value="50" />
    38         <layout type="log4net.Layout.PatternLayout">
    39           <conversionPattern value="%level" />
    40         </layout>
    41       </parameter>
    42       <parameter>
    43         <parameterName value="@logger" />
    44         <dbType value="String" />
    45         <size value="255" />
    46         <layout type="log4net.Layout.PatternLayout">
    47           <conversionPattern value="%logger" />
    48         </layout>
    49       </parameter>
    50       <parameter>
    51         <parameterName value="@message" />
    52         <dbType value="String" />
    53         <size value="1024" />
    54         <layout type="log4net.Layout.PatternLayout">
    55           <conversionPattern value="%message" />
    56         </layout>
    57       </parameter>
    58     </appender>
    59     <!--<root>
    60       <level value="info"/>
    61       <appender-ref ref="XmlFileAppender"/>
    62     </root>
    63     <logger name="*">
    64       <level value="info"/>
    65       <appender-ref ref="XmlFileAppender"/>
    66     </logger>
    67     <appender name="XmlFileAppender" type="log4net.Appender.FileAppender">
    68       <file value="app.xml"/>
    69       <appendToFile value="true"/>
    70       <layout type="log4net.Layout.XmlLayout"/>
    71     </appender>-->
    72   </log4net>
    73   <appSettings>
    74     <add key="log4net.Internal.Debug" value="true"/>
    75   </appSettings>
    76 </configuration>

    修改my.ini文件

    [client]
    port=3306
    [mysql]
    default-character-set=gbk
    [mysqld]
    default-character-set=gbk
    重启MYSQL服务
    CMD
    net stop mysql
    net start mysql

    由于之前可以直接输入中文,以为mysql配置没问题,导致走了一些弯路,通过配置后终于好了

     

  • 相关阅读:
    扫移动护理系统mysql数据库视图的Database通讯点报错Caused by: java.sql.SQLException: Value '00000000 00:00:00' can not be represented as java.sql.Timestamp
    ORACLE sql insert case when
    解决超过4000字符的字符串insert的时候报错ORA01461: 仅能绑定要插入LONG列的LONG值
    将92服务器上面的加解密服务run.bat形式改为后台服务形式
    Oracle调整sga_max_size内存参后报ORA00844和ORA00851 SGA_MAX_SIZE 42949672960 cannot be set to more than MEMORY_TARGET 6979321856. 导致数据库连接不上去,提示ORA01034:ORACLE notavailable
    解决MATLAB一直初始化,加速MATLAB(转载)
    WIN7下隐藏或显示Lenovo_Recovery_Q盘(转载)
    flowable流程中心设计(一)
    mysqlgroup by原理
    SpringMVC系列导航
  • 原文地址:https://www.cnblogs.com/Landlord/p/2848801.html
Copyright © 2011-2022 走看看