首页 > 其他分享 >log4net 在webapi中的简单使用

log4net 在webapi中的简单使用

时间:2024-06-03 16:21:16浏览次数:17  
标签:log4net webapi GetType 接口 简单 logger public

1. 安装两个nuget包: 

 2. 创建log4net.config 配置文件,并选中log4net文件点击鼠标右键选择属性将"复制到输出目录"改为"始终复制"

<?xml version="1.0" encoding="utf-8"?>
<log4net>
    <!-- Define some output appenders -->
    <appender name="rollingAppender" type="log4net.Appender.RollingFileAppender">
        <!--    value="logs/log.log"-->
        <file value="logs/" />
        <!--追加日志内容-->
        <appendToFile value="true" />

        <!--防止多线程时不能写Log,官方说线程非安全-->
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

        <!--可以为:Once|Size|Date|Composite-->
        <!--Composite为Size和Date的组合-->
        <rollingStyle value="Composite" />

        <!--当备份文件时,为文件名加的后缀-->
        <datePattern value="yyyyMMdd/&quot;log.log&quot;" />

        <!--日志最大个数,都是最新的-->
        <!--rollingStyle节点为Size时,只能有value个日志-->
        <!--rollingStyle节点为Composite时,每天有value个日志-->
        <maxSizeRollBackups value="20" />

        <!--可用的单位:KB|MB|GB-->
        <maximumFileSize value="3MB" />

        <!--置为true,当前最新日志文件名永远为file节中的名字-->
        <staticLogFileName value="false" />

        <!--输出级别在INFO和ERROR之间的日志-->
        <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 - %message%newline"/>
        </layout>
    </appender>
    <!-- error日志 -->
    <appender name="errorAppender" type="log4net.Appender.RollingFileAppender">
        <file value="logs/" />
        <appendToFile value="true" />
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <rollingStyle value="Composite" />
        <datePattern value="yyyyMMdd/&quot;error.log&quot;" />
        <maxSizeRollBackups value="20" />
        <maximumFileSize value="3MB" />
        <staticLogFileName value="false" />
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="ERROR" />
            <param name="LevelMax" value="ERROR" />
        </filter>
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
        </layout>
    </appender>
    <root>

        <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
        <!--OFF:0-->
        <!--FATAL:FATAL-->
        <!--ERROR: ERROR,FATAL-->
        <!--WARN: WARN,ERROR,FATAL-->
        <!--INFO: INFO,WARN,ERROR,FATAL-->
        <!--DEBUG: INFO,WARN,ERROR,FATAL-->
        <!--ALL: DEBUG,INFO,WARN,ERROR,FATAL-->
        <priority value="ALL"/>

        <level value="INFO"/>
        <!--使用上面配置的那个规则-->
        <appender-ref ref="rollingAppender" />
        <appender-ref ref="errorAppender" />
    </root>
</log4net>

3. 在 Program.cs 文件中添加配置

//log4net
builder.Logging.AddLog4Net("CfgFile/log4net.config");

 4. 使用

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace WEBAPI.Controllers
{
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class LoginController : ControllerBase
    {
        private readonly ILogger<LoginController> _logger;
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="logger"></param>
        public LoginController(ILogger<LoginController> logger)
        {
            _logger = logger;
            _logger.LogInformation($"{this.GetType()},info,接口访问Info");
            _logger.LogDebug($"{this.GetType()},debugger,接口访问Debugger");
            _logger.LogWarning($"{this.GetType()},warning,接口访Warning");
            _logger.LogError($"{this.GetType()},error,接口访问Error");
        }

        [HttpPost]
        public string Login()
        {
            return "sssssssss";
        }
    }
}

5. 查看生成的日志位置

\bin\Debug\net8.0\logs\20240603

 



标签:log4net,webapi,GetType,接口,简单,logger,public
From: https://www.cnblogs.com/tlfe/p/18229110

相关文章

  • (最新方法)最简单小鹅通视频下载分析及小白工具下载实现
    本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行,不得将代码用于非法用途,如侵立删!此方法包含步骤图示:小鹅通视频下载分析及工具实现操作环境win10,win11方案工具识别工具+链接置换工具+下载器......
  • Vue3简单项目流程分享——工作室主页
    Vue3简单项目流程分享——工作室主页零、写在最前以下是项目相关的一些链接:源代码GitHub仓库(需要魔法上网):仓库网页示例(需要魔法上网):网页示例UI图(来源@设计师杨贺):MasterGo主页补充:由于时间关系,该网页没有适配手机端,最佳展示效果为网页端1440p宽度。如果你想要运行源代码:......
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用后端框架
    1.项目介绍该项目是基于.net8开发的Asp.NetCoreWebApi后端服务,集成了Efcore,Autofac,Jwt,AutoMapper,Serilog,Quartz,MiniExcel等组件。该框架简单易上手,没有额外的学习成本;该项目采用了多层结构设计,有利于解耦,包含公共层,领域层,协约层,应用层,ORM层,Api层; #2.项目......
  • 一个简单的HTML网页 故宫学生网页设计作品 dreamweaver作业静态HTML网页设计模板 旅游
    家乡旅游景点网页作业制作网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有运用,CSS的代码量也很足、很细致,使用hover来完成过渡效果、鼠......
  • 学生家乡网页设计作品静态HTML网页模板源码 广西旅游景点网页设计 大学生家乡主题网站
    家乡旅游景点网页作业制作网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有运用,CSS的代码量也很足、很细致,使用hover来完成过渡效果、鼠......
  • 16位简单ASM题的记录——[HGAME 2022 week1]easyasm
    第一次遇见16位,和纯看汇编的题目,记录一下DIE16位,IDA用32位或者64位都可以打开IDA主要汇编部分seg003:0000;===============SUBROUTINE=======================================seg003:0000seg003:0000;Attributes:noreturnseg003:0000seg003:0000......
  • debian11 简单搭建go环境
    简单环境,目前仅支持单版本go,后续可以考虑直接把go环境放到docker中或podman中,这样每个容器都是一套go版本。新建文件夹目录#我直接用的root账户cd/rootmkdirgocdgomkdirbinpkgsrc下载安装包#可以自行选择官网不同版本安装包wgethttps://golang.google.cn/d......
  • log4net info 方法 根据不同业务创建不同的文件名
    log4netinfo方法根据不同业务创建不同的文件名 <configuration><!--...其他配置...--><configSections><sectionname="log4net"type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/></con......
  • 对补码的简单理解
    在学C时,对补码很困惑,通过学习,我的感悟是:溢出如果一个内存空间只能存放0~9中的一位数,那就会出现这样的现象:9+9=8,9+9+9=7,9+9+9+9=6,因为这些结果出现了进位,进位又被舍弃了,所以留在个位的数会减小。结果加9的操作得到的是减1的结果,因为加了一个9,舍弃了一个10,多舍弃的这个1,是来......
  • MD5加密算法中的加盐值(SALT)简单理解
    MD5是一种广泛使用的加密散列函数,它可以产生一个128位(16字节)的哈希值,通常用一个32位的十六进制字符串表示。MD5的主要目的是确保数据的完整性,而不是用于安全加密。加盐(Salting)是一种安全措施,用于增强密码存储的安全性。在密码学中,加盐值是一个随机生成的数据片段,它与密码结......