asp.net core+log4net 写入日志到sqlserver

本文介绍了如何在ASP.NET Core 5.0项目中将日志从文件系统迁移到数据库,使用log4net库进行配置,并详细解析了log4net.config的配置细节,包括数据库连接、日志写入和自定义字段映射。同时,文章还提供了如何保留日志到文件系统的配置,以及如何使用Microsoft.Extensions.Logging.ILogger接口来写入日志。
摘要由CSDN通过智能技术生成

asp.net core版本:5.0

log4net:2.0

一般情况下,我比较习惯把日志记录到日志文件中。但这种方式有一个缺点:把项目发布到生产环境后,每次查看日志都需要远程登录到服务器去查看日志文件,有点不太方便,所以我想把日志写入到数据库中。

首先我们新建一个asp.net core webapi项目,nuget添加如下包:

向日志系统中添加log4net:

Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                }).ConfigureLogging(logBuilder =>
                {
                    logBuilder.AddLog4Net();
                });

配置log4net.config:

<?xml version="1.0" encoding="utf-8"?>
<log4net>
  <logger name="actionLog">
    <level value="ERROR" />
    <appender-ref ref="adoNetAppender_SqlServer"/>
  </logger>
  <appender name="adoNetAppender_SqlServer" type="log4net.Appender.ADONetAppender">
    <!--日志缓存写入条数 设置为0时只要有一条就立刻写到数据库 生产环境可改为10-100写入一次-->
    <bufferSize value="1" />
    <!-- 日志数据库连接类型(此处非常重要,写错会导致无法写入数据库) -->
    <connectionType value="System.Data.SqlClient.SqlConnection,System.Data"/>
    <!--日志数据库连接串-->
    <connectionString value="server=.;database=TestDb;uid=sa;pwd=123456" />
    <!--日志数据库脚本-->
    <commandText value="INSERT INTO LogError(LogDateTime,HttpMethod,Uri,ErrMessage,ErrStackTrace) VALUES(@LogDateTime,@HttpMethod,@Uri,@ErrMessage,@ErrStackTrace)" />

    <!--日志时间 -->
    <parameter>
      <parameterName value="@LogDateTime" />
      <dbType value="DateTime" />
      <layout type="log4net.Layout.RawTimeStampLayout" />
    </parameter>
    <parameter>
      <parameterName value="@HttpMethod" />
      <dbType value="String" />
      <layout type="LogDemo.LogDbConfig.ActionLayoutPattern">
        <conversionPattern value = "%pattern{HttpMethod}"/>
      </layout>
    <
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值