首页 > 编程语言 >ASP.NET Core -NLog

ASP.NET Core -NLog

时间:2024-07-17 15:53:01浏览次数:14  
标签:Core ASP private public static NLog NET logger 日志

1.安装NuGet包

2.准备Nlog的配置文件 nlog.config

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="Info" internalLogFile="internal-nlog.txt">

    <!-- 定义日志输出目标 -->
    <targets>
        <target name="FileError" xsi:type="File"  fileName="${basedir}/Logs/Error/${var:logfilename}_Error.txt"
                layout="${longdate} ${level:uppercase=true} ${message} ${exception}" archiveEvery="Day" archiveAboveSize="240" maxArchiveFiles="20" 
                archiveFileName="${basedir}/Log/Error/${var:logfilename}_Error.{#}.txt" />

        <target name="FileWarn" xsi:type="File" fileName="${basedir}/Logs/Warn/${var:logfilename}_Warn.txt" layout="${longdate} ${message}"
                archiveEvery="Day" archiveAboveSize="240" maxArchiveFiles="20" archiveFileName="${basedir}/Log/Warn/${var:logfilename}_Warn.{#}.txt" />
        
        <target name="FileInfo" xsi:type="File" fileName="${basedir}/Logs/Info/${var:logfilename}_Info.txt" layout="${longdate} ${message}"
                archiveEvery="Day" archiveAboveSize="240" maxArchiveFiles="20" archiveFileName="${basedir}/Log/Info/${var:logfilename}_Info.{#}.txt" />
        
        <target name="FileDebug" xsi:type="File" fileName="${basedir}/Logs/Debug/${var:logfilename}_Debug.txt" layout="${longdate} ${message}"
                archiveEvery="Day" archiveAboveSize="240" maxArchiveFiles="20"  archiveFileName="${basedir}/Log/Debug/${var:logfilename}_Debug.{#}.txt"/>
    </targets>

    <!-- 定义日志规则 -->
    <rules>
        <logger name="*" minlevel="Error" maxlevel="Fatal" writeTo="FileError" />
        <logger name="*" minlevel="Warn" maxlevel="Warn" writeTo="FileWarn" />
        <logger name="*" minlevel="Info" maxlevel="Info" writeTo="FileInfo" />
        <logger name="*" minlevel="Debug" maxlevel="Debug" writeTo="FileDebug" />
    </rules>
</nlog>

 

 3.添加注入NLog服务的扩展

 private static string LogPath
 {
     get
     {
         return Path.Combine(AppContext.BaseDirectory, "nlog.config");
     }
 }
 public static ILoggingBuilder AddNLog(this ILoggingBuilder log,string? filename=null)
 {
     //删除其他的日志记录提供程序
     log.ClearProviders();
     LogManager.Configuration.LogFactory.Setup().LoadConfigurationFromFile(LogPath);
     LogManager.Configuration.Variables["logfilename"] = filename;
     //启用NLog作为日志记录的提供程序
     log.AddNLogWeb(LogManager.Configuration);
     return log;
 }

 

4.Program.cs注入NLog服务

//日志
builder.Logging.AddNLog();

 

5.使用

[ApiController]
[Route("[controller]")]
public class UserController(ILogger<UserController> logger) : ControllerBase
{
    [HttpGet("GetUserExit")]
    public void GetUserExit(string account)
    {
        logger.LogInformation("调用方法->GetUserExit");
    }
}

 

针对无法使用构造函数依赖注入使用日志的,建立如下Helper

public class LogHelper
{
    private static string logPath
    {
        get { return Path.Combine(AppContext.BaseDirectory, "nlog.config"); }
    }

    private static ISetupBuilder _factory = LogManager.Configuration.LogFactory.Setup().LoadConfigurationFromFile(logPath);
    private static Logger _logger = null;
    /// <summary>
    /// 日志操作对象
    /// </summary>
    public static Logger Log
    {
        get
        {
            if (_logger == null) _logger = _factory.LogFactory.GetCurrentClassLogger();
            return _logger;
        }
    }

}

如在Program中调用

 

标签:Core,ASP,private,public,static,NLog,NET,logger,日志
From: https://www.cnblogs.com/sugarwxx/p/18305578

相关文章

  • 端口转发工具rinetd 交叉编译及端口配置(下载、交叉编译、端口转发)
    端口转发工具rinetd从下载到使用(下载、交叉编译、端口转发)一、下载下载:https://wwm.lanzoue.com/ixjKn24phczg密码:apeb二、交叉编译1、进入源代码目录cd~/software/rinetd-0.702、清理现有配置和生成的文件makedistclean3、新建build文件夹,并进入mkdirbuildcdb......
  • 在 Kubernetes 上部署 llama3
    转自:https://zhuanlan.zhihu.com/p/695534674Ollama与OpenWebUI介绍Ollama 是一个运行大模型的工具,可以看成是大模型领域的Docker,可以下载所需的大模型并暴露API。OpenWebUI 是一个大模型的WebUI交互工具,支持Ollama,即调用Ollama暴露的API实现与大模型交互:部署......
  • .NET开源、简单、实用的数据库文档生成工具
    前言今天大姚给大家分享一款.NET开源(MITLicense)、免费、简单、实用的数据库文档(字典)生成工具,该工具支持CHM、Word、Excel、PDF、Html、XML、Markdown等多文档格式的导出:DBCHM。支持的数据库SqlServer、MySQL、Oracle、PostgreSQL、DB2、SQLite。文档的内容都包含什么?序号|......
  • EFCore -CodeFirst模式 数据库使用SqLite
    首先安装nuget包:System.Data.SQLite和SQLite.CodeFirst,如下二图:然后在App.config中配置数据库连接字符串:<connectionStrings><addname="StuDB"connectionString="datasource=BoilerCalculator.db"providerName="System.Data.SQLite.EF6"/&......
  • log4net 在.NET Core 控制台程序中的应用(2)
    简介本文主要讲解log4net在.NETCore控制台程序中的应用步骤1.安装log4netNuget包2.增加配置文件3.直接调用4.验证结果实施1.安装log4netNuget包首先,需要在你的.NETCore项目中安装log4net包。可以通过NuGet包管理器来安装。打开你的项目,然后使用以下命令安装log4net:......
  • log4net 在.NET Core 控制台程序中的应用
    简介本文主要讲解log4net在.NETCore控制台程序中的应用步骤1.安装log4netNuget包2.增加配置文件3.增加封装的LogHelper的类4.调用5.验证结果实施1.安装log4netNuget包首先,需要在你的.NETCore项目中安装log4net包。可以通过NuGet包管理器来安装。打开你的项目,然后使......
  • ASP.NET Core-自动映射
    1.安装NuGet包AutoMapper 2.建立示例Entity、DtoEntitypublicclassUser{publiclongId{get;set;}///<summary>///账号///</summary>publicstringUserName{get;set;}///<summary>///名字//......
  • iOS开发基础110-Core Graphics应用场景
    CoreGraphics是一种强大的二维图形绘制框架,广泛应用于iOS开发中。以下是几个常见的运用场景以及对应的代码示例:1.自定义视图绘制通过覆盖UIView的drawRect:方法,可以自定义视图的外观。示例代码:#import<UIKit/UIKit.h>@interfaceCustomView:UIView@end@implementat......
  • YOLOv10改进 | 注意力篇 | YOLOv10引入ParNetAttention注意力
    1. ParNetAttention介绍1.1 摘要:深度是深度神经网络的标志。但是,深度越大,意味着顺序计算越多,延迟也越长。这就引出了一个问题--有没有可能建立高性能的“非深度”神经网络?我们证明了这一点。为此,我们使用并行子网,而不是一层接一层堆叠。这有助于在保持高性能的同时有效地......
  • YOLOv10改进 | 独家创新- 注意力篇 | YOLOv10引入结合EMAttention和ParNetAttention形
    1.EPAAttention介绍     EPAAttention注意力机制综合了EMAttention和ParNetAttention的优势,能够更有效地提取图像特征。     (1).综合性与多样性     EPAAttention结合了两种不同的注意力机制,充分利用了EMAttention的分组归一化和特征增强......