广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >在.NET 6中使用日志组件log4net的方法
  • 680
分享到

在.NET 6中使用日志组件log4net的方法

2024-04-02 19:04:59 680人浏览 独家记忆
摘要

本文将简单介绍在.NET 6中使用log4net的方法,具体见下文范例。 1.首先新建一个ASP.net core空项目 2.通过Nuget包管理器安装下面两个包 log4net

本文将简单介绍在.NET 6中使用log4net的方法,具体见下文范例。

1.首先新建一个ASP.net core项目

2.通过Nuget包管理器安装下面两个包

log4net

Microsoft.Extensions.Logging.Log4Net.Aspnetcore

3.在项目根目录下新建log4net的配置文件log4net.config,并将其设置为始终复制。


<?xml version="1.0" encoding="utf-8" ?>
<log4net>
    <!--根配置-->
    <root>
        <!--日志级别:可选值: ERROR > WARN > INFO > DEBUG -->
        <level value="ERROR"/>
        <level value="WARN"/>
        <level value="INFO"/>
        <level value="DEBUG"/>
        <appender-ref ref="ErrorLog" />
        <appender-ref ref="WarnLog" />
        <appender-ref ref="InfoLog" />
        <appender-ref ref="DebugLog" />
    </root>
    <!-- 错误 Error.log-->
    <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
        <!--目录路径,可以是相对路径或绝对路径-->
        <param name="File" value="C:\logs\"/>
        <!--文件名,按日期生成文件夹-->
        <param name="DatePattern" value="/yyyy-MM-dd/"Error.log""/>
        <!--追加到文件-->
        <appendToFile value="true"/>
        <!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
        <rollingStyle value="Composite"/>
        <!--写到一个文件-->
        <staticLogFileName value="false"/>
        <!--单个文件大小。单位:KB|MB|GB-->
        <maximumFileSize value="200MB"/>
        <!--最多保留的文件数,设为"-1"则不限-->
        <maxSizeRollBackups value="-1"/>
        <!--日志格式-->
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="ERROR" />
            <param name="LevelMax" value="ERROR" />
        </filter>
    </appender>
 
    <!-- 警告 Warn.log-->
    <appender name="WarnLog" type="log4net.Appender.RollingFileAppender">
        <!--目录路径,可以是相对路径或绝对路径-->
        <param name="File" value="C:\logs\"/>
        <!--文件名,按日期生成文件夹-->
        <param name="DatePattern" value="/yyyy-MM-dd/"Warn.log""/>
        <!--追加到文件-->
        <appendToFile value="true"/>
        <!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
        <rollingStyle value="Composite"/>
        <!--写到一个文件-->
        <staticLogFileName value="false"/>
        <!--单个文件大小。单位:KB|MB|GB-->
        <maximumFileSize value="200MB"/>
        <!--最多保留的文件数,设为"-1"则不限-->
        <maxSizeRollBackups value="-1"/>
        <!--日志格式-->
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="WARN" />
            <param name="LevelMax" value="WARN" />
        </filter>
    </appender>
 
    <!-- 信息 Info.log-->
    <appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
        <!--目录路径,可以是相对路径或绝对路径-->
        <param name="File" value="C:\logs\"/>
        <!--文件名,按日期生成文件夹-->
        <param name="DatePattern" value="/yyyy-MM-dd/"Info.log""/>
        <!--追加到文件-->
        <appendToFile value="true"/>
        <!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
        <rollingStyle value="Composite"/>
        <!--写到一个文件-->
        <staticLogFileName value="false"/>
        <!--单个文件大小。单位:KB|MB|GB-->
        <maximumFileSize value="200MB"/>
        <!--最多保留的文件数,设为"-1"则不限-->
        <maxSizeRollBackups value="-1"/>
        <!--日志格式-->
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="INFO" />
            <param name="LevelMax" value="INFO" />
        </filter>
    </appender>
 
    <!-- 调试 Debug.log-->
    <appender name="DebugLog" type="log4net.Appender.RollingFileAppender">
        <!--目录路径,可以是相对路径或绝对路径-->
        <param name="File" value="C:\logs\"/>
        <!--文件名,按日期生成文件夹-->
        <param name="DatePattern" value="/yyyy-MM-dd/"Debug.log""/>
        <!--追加到文件-->
        <appendToFile value="true"/>
        <!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
        <rollingStyle value="Composite"/>
        <!--写到一个文件-->
        <staticLogFileName value="false"/>
        <!--单个文件大小。单位:KB|MB|GB-->
        <maximumFileSize value="200MB"/>
        <!--最多保留的文件数,设为"-1"则不限-->
        <maxSizeRollBackups value="-1"/>
        <!--日志格式-->
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG" />
            <param name="LevelMax" value="DEBUG" />
        </filter>
    </appender>
 
</log4net>

log4net配置参数此处不多赘述,只针对日志的输出格式参数conversionPattern配置做简要说明。


%M      输出日志方法名
%m      输出日志消息内容
%p      输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r      输出自应用启动到输出该log信息耗费的毫秒数
%c      输出所属的类目,通常就是所在类的全名
%t      输出产生该日志事件的线程名
%n      输出一个换行符
%l或%L  输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
%c      输出日志信息所属的类的全名
%d      输出完整的日志时间点的日期时间,支持自定义格式。比如:%d{HH:mm:ss},输出类似:22:10:28
%f      输出日志信息所属的类的类名

4.在Program中使用log4net输出自定义日志内容


using log4net;

var builder = WEBApplication.CreateBuilder(args);
//注入Log4Net
builder.Services.AddLogging(cfg =>
{
    cfg.AddLog4Net();
    //默认的配置文件路径是在根目录,且文件名为log4net.config
    //如果文件路径或名称有变化,需要重新设置其路径或名称
    //比如在项目根目录下创建一个名为cfg的文件夹,将log4net.config文件移入其中,并改名为log.config
    //则需要使用下面的代码来进行配置
    //cfg.AddLog4Net(new Log4NetProviderOptions()
    //{
    //    Log4NetConfigFileName = "cfg/log.config",
    //    Watch = true
    //});
});
var app = builder.Build();
//访问根页面时
app.MapGet("/", (ILogger<Program> logger) =>
{
    logger.LogInfORMation("logger:测试一下Log4Net=》Info");
    return "Hello World!";
});
//访问test页面时
app.MapGet("/test", () =>
{
    var log = LogManager.GetLogger(typeof(Program));
    log.Info("log:这是一条普通日志信息");
});
app.Run();

5.将项目运行起来,即可发现日志文件已生成

6.扩展使用:使用简单工厂模式ioc注入到自定义类中使用

新建一个ITestLog4Net接口文件,并为其定义一个Log方法。

并且新建一个TestLog4Net的自定义类,继承于ITestLog4Net,并实现该Log方法。

在Program中注入我们的自定义类TestLog4Net

builder.Services.AddTransient<ITestLog4Net, TestLog4Net>();
testLog4Net.Log();

使用方法

var testLog4Net = app.Services.GetService<ITestLog4Net>()!;

或者

var services = new ServiceCollection()!;
var provider = services.BuildServiceProvider()!;
var testLog4Net = provider.GetService<ITestLog4Net>()!;
testLog4Net.Log();

其中,使用下面这种写法,将会收到一个编译警告信息。

warning ASP0000: Calling 'BuildServiceProvider' from application code results in an additional copy of singleton services being created. Consider alternatives such as dependency injecting services as parameters to 'Configure'.

推荐使用上面的写法,百度之后,得到的答案是:不要通过调用BuildServiceProvider()这个方法应该只被 Host 调用一次。重复的服务提供者可能会导致一些意想不到的错误。如果有哪位大佬知道具体原因,请告知一下,谢谢!

Tips:代码中的感叹号!表示该对象不会为空,一定要确保该对象不会为空才能这样写,这是C#10中的新特性。

到此这篇关于在.net 6中使用日志组件log4net的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 在.NET 6中使用日志组件log4net的方法

本文链接: https://www.lsjlt.com/news/158056.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在.NET 6中使用日志组件log4net的方法
    本文将简单介绍在.NET 6中使用log4net的方法,具体见下文范例。 1.首先新建一个ASP.NET Core空项目 2.通过Nuget包管理器安装下面两个包 log4net...
    99+
    2022-11-12
  • .NET6在WebApi中使用日志组件log4net
    目录1、安装依赖2、配置文件3、注册组件4、使用1、安装依赖 Microsoft.Extensions.Logging.Log4Net.AspNetCore 2、配置文件 <...
    99+
    2022-11-12
  • .NET6在WebApi中如何使用日志组件log4net
    这篇文章主要介绍.NET6在WebApi中如何使用日志组件log4net,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、安装依赖Microsoft.Extensions.Logging.Log4Net.AspNet...
    99+
    2023-06-22
  • C#使用Log4net添加日志记录的方法
    目录一、Log4net二、使用日志库1. 添加库2. 配置log4net3. 使用log4net4. 结果一、Log4net 官方网站:https://logging.apache....
    99+
    2022-11-13
  • C#使用log4net记录日志的方法步骤
    一、Nuget安装log4net --> Install-Package log4net 二、在AssemblyInfo.cs文件中添加log4net.dll的参数。 [as...
    99+
    2022-11-12
  • Django 中使用日志的方法
    目录1. 日志的意义2. django 中如何处理日志3. Python 中使用日志3.1 直接输出日志信息3.2 设置日志级别3.3 保存日志到文件3.4 设置编码3.5 覆盖日志...
    99+
    2022-11-11
  • .Net Core 使用NLog记录日志到文件和数据库的操作方法
    NLog 记录日志是微软官方推荐使用。 接下来,通过配置日志记录到文件和Sql Server数据库。 第一步:首先添加包NLog.Config (可通过微软添加包命令Install-...
    99+
    2022-11-12
  • 在Java中使用日志框架log4j的方法
    日志就是记录程序的运行轨迹,方便快速定位问题 如果用System.out.println(),信息是打印在控制台。等到产品上线后没有控制台,如果有报错信息,根本不知道去哪里看,就不知...
    99+
    2022-11-12
  • .net core 使用阿里云分布式日志的配置方法
    前言 好久没有出来夸白了,今天教大家简单的使用阿里云分布式日志,来存储日志,没有阿里云账号的,可以免费注册一个 开通阿里云分布式日志(有一定的免费额度,个人测试学习完全没问题的,香...
    99+
    2022-11-12
  • MySQL中binlog日志的使用方法
    这篇文章主要介绍MySQL中binlog日志的使用方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!binlog 就是binary log,二进制日志文件,这个文件记录了MySQL所有的DML操作。通过binlog日...
    99+
    2023-06-14
  • Kotlin中日志的使用方法详解
    1 引言 想必学过Java的人都知道一个@Slf4j使用得多么的舒服: @Slf4j public class TestController{ @GetMapping("/t...
    99+
    2022-11-11
  • 怎么在Python中使用handler方法输出日志
    今天就跟大家聊聊有关怎么在Python中使用handler方法输出日志,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;...
    99+
    2023-06-14
  • Linux系统中使用logrotate来管理日志文件的方法
    本篇内容主要讲解“Linux系统中使用logrotate来管理日志文件的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux系统中使用logrotate来管理日志文件的方法”吧!在Deb...
    99+
    2023-06-13
  • Go语言中配置文件使用与日志配置的方法
    本文小编为大家详细介绍“Go语言中配置文件使用与日志配置的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“Go语言中配置文件使用与日志配置的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。项目结构调整说先对...
    99+
    2023-06-30
  • 在uni-app中使用vant组件的方法
    目录前言:步骤一: 步骤二: 步骤三: 步骤四: 步骤五:​ 步骤六:步骤七: 写在最后:前言: 最近在做uni-app的...
    99+
    2023-02-18
    uni-app使用vant组件 uni-app使用vant组件
  • 你知道 PHP 日志 API 在 Unix 系统中的使用方法吗?
    PHP 日志 API 在 Unix 系统中的使用方法 PHP 是一种非常流行的编程语言,用于开发 Web 应用程序和其他各种应用程序。当我们在开发 PHP 应用程序时,经常需要记录一些日志信息来帮助我们诊断问题。PHP 提供了许多不同的日志...
    99+
    2023-08-06
    日志 api unix
  • JAVA中使用log4j及slf4j进行日志输出的方法
    JAVA中输出日志比较常用的是log4j,这里讲下log4j的配置和使用方法,以及slf4j的使用方法。 一、下载log4j的架包,并导入项目中,如下: 二、创建log4j.properties配置文件 1、log4j配置文件的位置...
    99+
    2023-10-06
    java log4j 单元测试
  • React中使用antd组件的方法
    目录antd使用antdantd antd 是基于 Ant Design 设计体系的 React UI 组件库,主要用于研发企业级中后台产品。 国内镜像为:https://ant-d...
    99+
    2022-11-13
  • 阿里云服务器日志文件夹的位置及使用方法
    本文将详细介绍阿里云服务器的日志文件夹位置,以及如何进行日志管理。阿里云服务器的日志文件是服务器运行状态的重要记录,对于服务器的维护和故障排查有着至关重要的作用。本文将帮助读者更好地理解和管理阿里云服务器的日志文件。 阿里云服务器的日志文件...
    99+
    2023-11-22
    阿里 使用方法 文件夹
  • Bootstrap中分页组件的使用方法
    这篇文章主要介绍Bootstrap中分页组件的使用方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!概述在Bootstrap框架中提供了两种分页导航:☑   带页码的分页导航☑   带翻页的分页导...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作