.Net6 web API (Log日志)

前言

需要给项目打上日志 可以查询哪里的信息

 

下面是步骤

注意:不能允许没有任何监控的系统上线
如何监控---日志记录
需要日志信息的持久化-保存到文件中,保存到数据库中;
11.11og4net日志记录
1、Nuget引l入程序包Log4net+Microsoft.Extensions.Logging.Log4Net.AspNetcore
2、准备配置文件【设置为始终复制】
3、植入1og4net
builder.Logging.AddLog4Net("cfgFile/log4net.Config");

 

代码新建一个

LoggingController.cs 控制器

using Microsoft.AspNetCore.Mvc;
using yanfanNet6WebApi.Utility.Swagger;

namespace yanfanNet6WebApi.Controllers;

/// <summary>
/// 文件资源
/// </summary>
[ApiController]
[ApiVersion("1.0")]
[Route("[controller]/v{version:apiVersion}")]
public class LoggingController : ControllerBase
{

    private readonly ILogger<LoggingController> _logger;

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

    /// <summary>
    /// 获取日志信息
    /// </summary>
    /// <returns></returns>
    [HttpGet]
    public IActionResult GetLog()
    {
        _logger.LogInformation("====Get APi 被调用======");
        return new JsonResult(new ApiResult<string>()
        {
            Success = true,
            Data = "日志记录",
        });
    }

}

internal class ApiResult<T>
{
    public ApiResult()
    {
    }

    public bool Success { get; set; }
    public string Message { get; set; }
    public string Data { get; set; }
}

 

 

 这个日志可以在官网上下载

https://logging.apache.org/log4net/release/config-examples.html

OK 我把代码放出来

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

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

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

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

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

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

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

      <!--输出级别在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] (%file:%line) %-5level %logger - %message%newline" />
      </layout>
    </appender>


    <!--SqlServer形式-->
     <!--SqlServer形式-->
    <appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">
         <!--日志缓存写入条数设置为0时只要有一条就立刻写到数据库-->
        <bufferSize value="0" />
        <connectionType value="System.Data.SqlClient.SqlConnection, System.Data.SqlClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <connectionString value="Data source=[database server];initial catalog=LogManager;integrated security=false;persist security info=True;User ID=[sa];Password=[password]" />
        <commandText value="INSERT INTO Log4Net ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
        <parameter>
            <parameterName value="@log_date" />
            <dbType value="DateTime" />
            <layout type="log4net.Layout.RawTimeStampLayout" />
        </parameter>
        <parameter>
            <parameterName value="@thread" />
            <dbType value="String" />
            <size value="255" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%thread" />
            </layout>
        </parameter>
        <parameter>
            <parameterName value="@log_level" />
            <dbType value="String" />
            <size value="50" />
            <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="@mess  age" />
            <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="2000" />
            <layout type="log4net.Layout.ExceptionLayout" />
        </parameter>
    </appender>

    <root>
        <!--控制级别,由低到高:ALLDEBUGINFOWARNERRORFATALOFF-->
        <!--OFF:0--><!--FATAL:FATAL-->
        <!--ERROR:ERROR,FATAL-->
        <!--WARN:WARNERROR,FATAL-->
        <!--INFO:INFO,WARN.ERROR,FATAL-->
        <!--DEBUG:TNFO.WARN.ERROR.FATAL-->
        <!--ALL:DEBUG,INFO,WARN,ERROR,FATAL-->
        <priority value="ALL"/>
        <level value="INFo"/>
        <appender-ref ref="rollingAppender"/>
        <!--数据库的日志-->
 <!--       <appender-ref ref="AdoNetAppenderSqlServer" />-->
     </root>
</log4net>
View Code

 

然后就是引入依赖

Nuget引l入程序包Log4net+Microsoft.Extensions.Logging.Log4Net.AspNetcore

 

 

 

 

然后加载完毕就好了,

设置成始终复制

然后在重新生成

 然后

在目录下会看到这个

 

然后需要在配置

 builder.Logging.AddLog4Net("cfgFile/log4net.Config");

 

OK 然后运行

 

然后在你的目录下就看到这个日志了OK 等会再说连接数据库的 

 

posted @ 2024-05-18 23:20  -鹿-  阅读(21)  评论(0编辑  收藏  举报