.Net Core使用Logger实现log写入本地文件系统

下面是详细讲解".Net Core使用Logger实现log写入本地文件系统"的完整攻略。

一、前言

在开发过程中,记录系统运行状态和错误信息是非常重要的一件事情,这时候就需要使用log来记录。在.Net Core中,可以通过Logger实现log写入本地文件系统。

二、Logger介绍

Logger是.NET Core框架中的一个基本组件,它允许您轻松地记录指定级别的信息,包括调试、信息、警告和错误等级。Logger中还包含了各种不同的日志记录器提供程序(Logger Provider),这些记录器提供程序允许将日志信息写入各种数据源,包括控制台、文件、数据库、Elasticsearch等。

三、实现步骤

1. 准备工作

首先,我们需要创建一个.Net Core项目。可以使用Visual Studio或是dotnet命令行工具创建项目。

2. 安装依赖

使用NuGet Package Manager安装Microsoft.Extensions.Logging和Microsoft.Extensions.Logging.File包。这两个包分别提供了框架级别的日志记录器和能够将日志信息写入文件的记录器提供程序。

3. 配置Logger

在appsettings.json文件中添加日志相关的配置项。其中LogLevel设置为日志的最小记录级别,FileProvider指定文件写入方式,路径为Log文件夹下的logs.txt文件。

{
  "Logging": {
    "LogLevel": {
      "Default": "Information"
    },
    "File": {
      "Path": ".\\Log\\logs.txt",
      "FileSizeLimitBytes": 10000000
    },
    "FileProvider": {
      "type": "Microsoft.Extensions.Logging.File.FileLoggerProvider, Microsoft.Extensions.Logging.File",
      "fileName": "logs.txt",
      "shared": true,
      "includeScopes": false,
      "logDirectory": ".\\Log"
    }
  }
}

4. 注入Logger

在Program.cs文件中,使用CreateDefaultBuilder方法配置WebHostBuilder,然后在Startup.cs文件中注入Logger。

//Program.cs
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                   .ConfigureLogging(logging =>
                   {
                       logging.ClearProviders();
                       logging.AddConfiguration(loggingConfiguration.GetSection("Logging"));
                       logging.AddConsole(); // 注册 Console Logger
                       logging.AddDebug(); // 注册 Debug Logger
                       logging.AddFile();
                   })
                   .UseStartup<Startup>();

//Startup.cs
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime applicationLifetime, ILogger<Startup> logger)
{
     //使用Logger记录日志信息
     logger.LogInformation("Application started");
     applicationLifetime.ApplicationStopping.Register(() =>
     {
         logger.LogInformation("Application stopping");
     });
}

5. 测试Logger

使用Logger记录不同级别的日志信息,并查看是否成功写入logs.txt日志文件中。

private readonly ILogger<HomeController> _logger;

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

public IActionResult Index()
{
    _logger.LogInformation("This is a test log message.");
    return View();
}

public IActionResult Privacy()
{
    _logger.LogWarning("This is a warning log message.");
    return View();
}

public IActionResult Error()
{
    _logger.LogError("This is an error log message.");
    return View();
}

四、示例说明

示例一:

在项目中加入Logger后,记录所有的控制台信息,并将信息输出到logs文件中。在控制器中编写代码,如下所示:

ILogger logger = LogManager.CreateLogger<YourController>();
logger.LogInformation("The message");
logger.LogWarning("Something to warn about");
logger.LogError("Something went wrong");

示例二:

在.NET Core Web应用程序中记录日志,如果需要将日志保存到指定的日志文件中,可以使用以下代码示例:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews();
        services.AddLogging(loggingBuilder =>
        {
            loggingBuilder.AddConfiguration(Configuration.GetSection("Logging"));
            loggingBuilder.AddConsole();
            loggingBuilder.AddFile(Configuration.GetValue<string>("Logging:FilePath"));
        });
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("error");
        }

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });

        loggerFactory.AddFile(Configuration.GetValue<string>("Logging:FilePath"));
    }
}

public class HomeController : Controller
{
    private readonly ILogger<HomeController> _logger;

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

    public IActionResult Index()
    {
        _logger.LogInformation("This is an index action of home controller.");
        return View();
    }
}

以上就是“.Net Core使用Logger实现log写入本地文件系统”的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:.Net Core使用Logger实现log写入本地文件系统 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • C#和vb.net实现PDF 添加可视化和不可见数字签名

    C# 和 VB.net 都可以使用 iTextSharp 库来实现 PDF 文件添加数字签名。数字签名可以是可视化的,也可以是不可见的。 以下是实现 PDF 添加数字签名的完整攻略: 步骤 1:引入 iTextSharp 库 在项目中引入 iTextSharp 库。通常会从 NuGet 软件包管理器中安装该库,或者从官方网站 https://github.c…

    C# 2023年5月31日
    00
  • C#中for循环、while循环循环执行的方法

    C#中的for循环和while循环是常用的循环结构,用于重复执行相同或类似的代码块,下面是它们的详细讲解和示例说明: for循环 for循环是一种经典的循环语句,用于重复执行一段代码,可以控制循环变量的初始值、终止条件和每次循环变量的增量。for循环的语法如下: for (初始化表达式; 循环条件; 迭代语句) { // 循环体语句 } 其中,初始化表达式只…

    C# 2023年6月7日
    00
  • C#中调用Servlet示例

    下面就详细讲解“C#中调用Servlet示例”的完整攻略。 概述 在C#中调用Servlet可以使用HttpClient来实现。HttpClient是一个.NET框架的类库,它是对HTTP请求和响应的封装,可以用来发送HTTP请求和接收HTTP响应。 步骤 引入HttpClient的命名空间: using System.Net.Http; 创建HttpCli…

    C# 2023年5月15日
    00
  • C#控制台程序如何发布到服务器Linux上运行

    下面我将详细讲解C#控制台程序如何发布到服务器Linux上运行的攻略。 1. 准备工作 首先,我们需要安装以下软件: .NET Core SDK SSH工具,如PuTTY等 2. 编译控制台程序 进入控制台程序的目录,使用以下命令编译: dotnet publish -c Release -r linux-x64 其中,-c参数指定编译模式为Release,…

    C# 2023年6月6日
    00
  • ASP.NET MVC使用Session会话保持表单状态

    以下是“ASP.NET MVC使用Session会话保持表单状态”的完整攻略: 什么是Session会话 Session会话是一种机制,用于在ASP.NET MVC应程序保持用户状态。它允许您用户之间共享数据,并在用户浏览应用程序时保持数据的持久性。 ASP.NET使用Session会话保持表单状态 是ASP.NET MVC使用Session会话保持表单状态…

    C# 2023年5月12日
    00
  • asp.net javascript 文件无刷新上传实例代码第2/2页

    首先我们需要明确一下本文的主题,它是关于使用ASP.NET框架和JavaScript技术来实现无刷新上传文件功能的攻略。接下来,我会详细讲解这个实例代码的代码结构和实现过程,并附加两个示例说明。 一、代码结构 这个实例由两个部分组成: Default.aspx:这个页面包含一个表单和一些JavaScript代码。 UploadFile.ashx: 这个处理程…

    C# 2023年5月31日
    00
  • SQL Server 2008 新特性 总结复习(一)

    SQL Server 2008 新特性 总结复习(一) SQL Server 2008 是微软公司开发的一款数据库管理系统软件,它具有很多新特性,本文将会对其中一些新特性进行详细讲解。 1. 影响行的Trigger 在 SQL Server 2008 中,Trigger 变得更加强大了,它可以使用 inserted 和 deleted 表来访问触发器所在表中…

    C# 2023年6月1日
    00
  • C# CheckedListBox控件的用法总结

    C# CheckedListBox控件的用法总结 简介 C# CheckedListBox控件是Windows窗体应用程序中常用的控件之一,它可以让用户在一个列表中,通过勾选方式选择其中的多个选项。本文将总结C# CheckedListBox控件的用法,包括如何进行添加、删除、修改、选中等操作,以及如何获取用户选择的内容。 创建CheckListBox控件 …

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部