log4net无法写入日志到mysql

buppter 2017-12-03 04:55:23
搞了两天了,爬了好多贴还是不对,只能发帖求助了

是在winform下使用的

目前是可以写到TXT文件里,但是就是写入不到数据库。不知道什么原因

已经引用了log4net.dll,也放到了Debug文件夹下、

程序框架是.NET FrameWork 4.5

我新建了log4net.config,然后配置如下

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<!--定义到保存到文件中-->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<!--定义文件存放位置-->
<file value="D:\log.txt"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd-HH:mm:ss"/>
<layout type="log4net.Layout.PatternLayout">
<!--输出格式-->
<conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline"/>
</layout>
</appender>

<!--定义到日志保存到数据库中-->
<appender name="AdoNetAppender_MySql" type="log4net.Appender.AdoNetAppender">

<bufferSize value="1"/>

<connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" />
<connectionString value="server=localhost;user id=root;pwd=123456;database=labproject"/>
<commandText value="INSERT INTO log(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>
<!--文件形式记录日志-->
<appender-ref ref="LogFileAppender" />
<level value="ALL"/>
<appender-ref ref="AdoNetAppender_MySql"/>
</root>

</log4net>
</configuration>


然后在AssemblyInfo.cs插入语句

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


我的数据库(没代码了,贴个图)


最后在winform中添加了一个button按钮和label

lprivate void button1_Click(object sender, EventArgs e)
{
log4net.ILog myLogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
myLogger.Warn("这是一个警告日志");
myLogger.Info("单击了按钮");
myLogger.Debug("用Log4Net写入数据库日志");
myLogger.Error("这是一个错误日志");
myLogger.Fatal("这是一个致命的错误日志");
try
{
ILog logger = LogManager.GetLogger("LogRecord");
logger.Debug("用Log4Net写入数据库日志");

}
catch (Exception ex)
{
myLogger.Error(ex);
}
finally
{
label1.Text = DateTime.Now.ToLongTimeString() + ":操作日志已记录完成";
}
}


但就是写入不到数据库,写到TXT文件没问题,实在不知道错哪了,求帮助
...全文
275 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
buppter 2017-12-04
  • 打赏
  • 举报
回复
引用 1 楼 xomix 的回复:
你直接把连接部分拿到代码里,看看能插入吗
可以插入,但就是在log4net里插入不了
  • 打赏
  • 举报
回复
你直接把连接部分拿到代码里,看看能插入吗
正怒月神 2017-12-04
  • 打赏
  • 举报
回复
这么高级?我倒是没试过Log4写日志到mysql

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧