log4net 数据库存日志正确配置

网上一大堆log4net 配置,日志存入数据库,尤其豆包给的配置全是错的,垃圾

找deepseek终于正确了,前后豆包浪费了我一个小时

注意:<log4net>外层没有<configuration>

创建表Sql语句:

sql 复制代码
CREATE TABLE log (
    Id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '自增主键',
    LogTime DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '日志时间',
    Level VARCHAR(20) NOT NULL COMMENT '日志级别',
    Logger VARCHAR(255) COMMENT '日志类名',
    Message TEXT COMMENT '日志信息',
    Exception TEXT COMMENT '异常堆栈',
    Thread VARCHAR(50) COMMENT '线程号',
    IpAddress VARCHAR(100) COMMENT '客户端IP'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

正确配置:

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<log4net debug="true">
	<!-- ========== 定义输出到 MySQL 的 Appender ========== -->
	<appender name="AdoNetAppender_MySql" type="log4net.Appender.ADONetAppender">
		<!-- 缓冲大小设为1,每写一条立即提交,便于调试(生产环境可按需调大) -->
		<bufferSize value="1" />
		<!-- 关闭事务,避免事务未提交导致数据丢失(测试时可开启,生产建议根据需求) -->
		<useTransactions value="false" />

		<!-- 1. MySQL 驱动:不指定具体版本,由 .NET 自动加载项目引用的 MySql.Data -->
		<connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" />

		<!-- 2. 连接字符串(!!!请替换为你自己的 MySQL 连接信息 !!!) -->
		<connectionString value="server=127.0.0.1;user id=root;password=525625;database=testdb;port=3306;CharSet=utf8;Pooling=True;" />

		<!-- 3. SQL 插入语句(字段名用反引号包裹,防止与保留字冲突) -->
		<commandText value="
      INSERT INTO `log` (`LogTime`, `Level`, `Logger`, `Message`, `Exception`, `Thread`, `IpAddress`)
      VALUES (?log_time, ?log_level, ?logger, ?message, ?exception, ?thread, ?ip)
    " />

		<!-- ====== 参数定义(顺序必须与 SQL 中的字段顺序一致) ====== -->

		<!-- 日志时间 -->
		<parameter>
			<parameterName value="?log_time" />
			<dbType value="DateTime" />
			<layout type="log4net.Layout.RawTimeStampLayout" />
		</parameter>

		<!-- 日志级别 -->
		<parameter>
			<parameterName value="?log_level" />
			<dbType value="String" />
			<size value="20" />
			<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="4000" />
			<layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="%exception" />
			</layout>
			<!-- 关键:如果日志没有异常,允许插入 NULL -->
			<allowNull value="true" />
		</parameter>

		<!-- 线程名称 -->
		<parameter>
			<parameterName value="?thread" />
			<dbType value="String" />
			<size value="50" />
			<layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="%thread" />
			</layout>
		</parameter>

		<!-- IP 地址(从全局上下文中获取,需在代码中设置) -->
		<parameter>
			<parameterName value="?ip" />
			<dbType value="String" />
			<size value="50" />
			<layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="%property{ip}" />
			</layout>
			<!-- 如果未设置 ip 属性,允许插入 NULL(或空字符串,取决于表定义) -->
			<allowNull value="true" />
		</parameter>
	</appender>

	<!-- ========== 根日志器:所有日志都使用上面的 Appender ========== -->
	<root>
		<level value="ALL" />
		<appender-ref ref="AdoNetAppender_MySql" />
	</root>
</log4net>
相关推荐
wno7045 小时前
postgresSQL压缩版安装与基本命令
数据库·postgresql
聚美智数7 小时前
智能结构化识别-图片结构解析-图像结构化解析-照片结构化解析
android·java·数据库
瀚高PG实验室7 小时前
瀚高数据库常用系统表查询入门指南(附常用SQL)
数据库·sql·postgresql·瀚高数据库
ben9518chen7 小时前
mysql数据库基本操作
数据库·mysql
2603_965148118 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
土豆.exe8 小时前
nf_tables 的 verdict 被读了两次:一个十年未闭合的位域错配
java·数据库·网络安全·缓存
缓慢更新8 小时前
表单引擎的存储建模:宽表与文档库的取舍
运维·服务器·网络·数据库·低代码·oracle·适配器模式
Web3&Basketball10 小时前
实测Gemini4Argon:ERQA 87%登顶长程任务榜
数据库·python·大模型·多模态·gemini·长上下文·推理优化
xiaogai_gai10 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
注塑机数据采集联网11 小时前
注塑机数据采集网关对接MES系统数字化技术方案
大数据·网络·数据库·物联网·数据挖掘·数据分析