开发随笔记录——关于ASP.NET Core使用log4Net进行记录日志操作。

声明:本文章采用ASP.NET Core 3.1版本仅为了经验分享以及经验记录,如若涉及到利益请联系博主进行删帖,谢谢。

首先我们知道.NET Core框架只是一个空壳子里面需要的任何东西都要自己去手动添加,所以这里使用NuGet下载以下三个管理包:

1、log4net

2、Microsoft.Extensions.Logging.Console

3、Microsoft.Extensions.Logging.Log4Net.AspNetCore

接下来我们在本项目中  右键==》添加==》新建项==》ASP.NET Core==》web 配置文件   我们命名为log4net.config,里面内容填入如下代码:

复制代码
<?xml version="1.0" encoding="utf-8"?>
<log4net>
    <appender name="RollingAppender" type="log4net.Appender.RollingFileAppender">
        <!--指定日志文件保存的目录-->
        <file value="log\log.txt"/>
        <!--追加日志内容-->
        <appendToFile value="true"/>
        <!--可以为:Once|Size|Date|Composite-->
        <!--Compoosite为Size和Date的组合-->
        <rollingStyle value="Composite"/>
        <!--设置为true,当前最新日志文件名永远为file字节中的名字-->
        <staticLogFileName value="false"/>
        <!--当备份文件时,备份文件的名称及后缀名-->
        <datePattern value="yyyyMMdd.txt"/>
        <!--日志最大个数-->
        <!--rollingStyle节点为Size时,只能有value个日志-->
        <!--rollingStyle节点为Composie时,每天有value个日志-->
        <maxSizeRollBackups value="20"/>
        <!--可用的单位:KB|MB|GB-->
        <maximumFileSize value="5MB"/>
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="ALL"/>
            <param name="LevelMax" value="FATAL"/>
        </filter>
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
        </layout>
    </appender>
    <root>
        <priority value="ALL"/>
        <level value="ALL"/>
        <appender-ref ref="RollingAppender"/>
    </root>
</log4net>
复制代码

之后,我们在Program.cs文件下,修改CreateHostBuilder代码,如下:

复制代码
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureLogging((context, loggingbuilder)=> {

                    //该方法需要引入Microsoft.Extensions.Logging名称空间

                    loggingbuilder.AddFilter("System", LogLevel.Warning); //过滤掉系统默认的一些日志
                    loggingbuilder.AddFilter("Microsoft", LogLevel.Warning);//过滤掉系统默认的一些日志
                    //添加Log4Net
                    //var path = Directory.GetCurrentDirectory() + "\\log4net.config"; 
                    //不带参数:表示log4net.config的配置文件就在应用程序根目录下,也可以指定配置文件的路径
                    loggingbuilder.AddLog4Net();

                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
复制代码

之后,在控制器中注入日志服务,如下:

private readonly ILogger<TestController> _logger;

        public TestController(ILogger<TestController> logger)
        {
            _logger = logger;
        }

之后就可以在action中使用日志,添加日志信息了,如下:

            _logger.LogInformation("");
            _logger.LogError("");
            _logger.LogWarning("");        

之后就可以在该项目根目录中找到生成的日志文件了。

posted @   苏瑾~  阅读(158)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示