从 NuGet 安装 Serilog

核心的包是 Serilog 和 Serilog.AspNetCore。

常用的还有 Serilog.Sinks.Console 控制台日志打印 和 Serilog.Sinks.File 文件日志打印。

PM> Install-Package Serilog
PM> Install-Package Serilog.AspNetCore
PM> Install-Package Serilog.Sinks.Console
PM> Install-Package Serilog.Sinks.File

在 Main函数 中配置 Serilog

在 Main 函数的代码大概如下,应该是够用了,如需其他配置请参考 Serilog官方文档

    public static void Main(string[] args)
{
// 配置 Serilog
Log.Logger = new LoggerConfiguration()
// 最小的日志输出级别
.MinimumLevel.Information()
// 日志调用类命名空间如果以 Microsoft 开头,覆盖日志输出最小级别为 Information
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
// 配置日志输出到控制台
.WriteTo.Console()
// 配置日志输出到文件,文件输出到当前项目的 logs 目录下
// 日记的生成周期为每天
.WriteTo.File(Path.Combine("logs", @"log.txt"), rollingInterval: RollingInterval.Day)
// 创建 logger
.CreateLogger(); CreateWebHostBuilder(args).Build().Run();
} public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
// 将 Serilog 设置为日志记录提供程序
.UseSerilog();

或者

    public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
} public static IWebHostBuilder CreateWebHostBuilder (string[] args) {
return WebHost.CreateDefaultBuilder (args)
.UseStartup<Startup> ()
.UseSerilog ((context, configuration) => {
configuration
.MinimumLevel.Information()
// 日志调用类命名空间如果以 Microsoft 开头,覆盖日志输出最小级别为 Information
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
// 配置日志输出到控制台
.WriteTo.Console()
// 配置日志输出到文件,文件输出到当前项目的 logs 目录下
// 日记的生成周期为每天
.WriteTo.File(Path.Combine("logs", @"log.txt"), rollingInterval: RollingInterval.Day)
// 创建 logger
.CreateLogger();
});
}

在项目中使用 Serilog 进行日志输出

使用 Serilog 时,直接使用 ILogger 即可,因为此服务项目应该是默认注入了,此处需要依赖关系注入知识。

如你不了解依赖关系注入,请看 微软官方文档

    [Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
private readonly ILogger<ValuesController> _logger; public ValuesController(ILogger<ValuesController> logger)
{
_logger = logger;
} // GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
_logger.LogInformation("Serilog test info.");
_logger.LogError("Serilog test error.");
return new string[] { "value1", "value2" };
}
}

随后启动项目即可看到控制台和项目文件中出现配置所对应的控制台日志和日志文件。


参考文档 :

最新文章

  1. C# 复制指定节点的所有子孙节点到新建的节点下
  2. ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。
  3. CSS的两个小知识点 伪类选择器和display:table-cell
  4. c++面试题目解析
  5. Incompatible operand types DeptE and int 异常处理
  6. JS深入了解闭包
  7. SqlServer 高版本数据库 降级
  8. Linux操作系统的LILO详解
  9. codeforces 505B Mr. Kitayuta&#39;s Colorful Graph(水题)
  10. xshell连接ubuntu
  11. 算法(第四版)C# 习题题解——2.4
  12. Altium designer 新建快捷键
  13. 如何用ABP框架快速完成项目(14) - 结尾? 当然不是, 这只是开始!
  14. ERP行业内幕看了这五个问题全懂了
  15. gym-10135I
  16. python 模块一(random,counter,defaultdict,time,wraps,reduce) 栈 队列 双向队列
  17. Jenkins Post Build网址
  18. django for 循环中,获取序号
  19. hdu 5326(基础题) work
  20. CentOS下SSH远程免密登录服务器

热门文章

  1. Alibaba Nacos 学习(五):K8S Nacos搭建,使用nfs
  2. C#Windows Forms (Demo.SYS)--xdd
  3. 基于SDF渲染字体
  4. 3 JAVA的基本变量类型
  5. 最全 HTTP 安全响应头设置指南
  6. python内置的进制转换方法
  7. 【数据结构】之顺序表(Java语言描述)
  8. 处理器CPU天梯图,显卡天梯图(性能排名图)
  9. Stack Overflow上59万浏览量的提问:为什么会发生ArrayIndexOutOfBoundsException?
  10. 代码自动机(攻 ACwing 限时题)