使用log4net 日志输出到数据库MySQL

时间:2023-03-08 22:37:47
使用log4net 日志输出到数据库MySQL

使用Log4Net的输出日志到MySQL

使用步骤如下:

1. 添加引用Log4Net.dll, mysql.data.dll到工程中

note: mysql.data.dll 版本要高,最好到mysql官网下载最新的版本(6.2.7)。本人的教训:用了低版本的mysql.data.dll, 以至于没办法插入数据到MySQL数据库,插入表内容为NULL, 提示System.data.dll加载错误。

2. 添加app.config到工程中

app.config 配置如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="AdoNetAppender_MySql" type="log4net.Appender.AdoNetAppender"> <bufferSize value="1"/>
<param name="ConnectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data"/> <param name="ConnectionString" value="server=localhost;database=test;Uid=root;Pwd=root;"/>
<commandText value="INSERT INTO log4net(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"/>
<!--<layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss}" />-->
</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>
<root>
<level value="ALL"/>
<appender-ref ref="AdoNetAppender_MySql"/>
</root>
<logger name="*">
<level value="ALL" />
<appender-ref ref="AdoNetAppender_MySql" />
</logger>
</log4net>
</configuration>

3. 在AssemblyInfo.cs中添加以下一条语句:

[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]

4. 在程序中调用

log4net.ILog log = log4net.LogManager.GetLogger("MyLogger");

log.Info("hello world!");

5. 可以到mysql数据库中查看是否成功插入一条Message: hello world!

Re: 以上是个人的总结,提供参考。