Serilog.Sinks.File 6.0.0

前缀已保留
dotnet add package Serilog.Sinks.File --version 6.0.0                
NuGet\Install-Package Serilog.Sinks.File -Version 6.0.0                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />                
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件中以引用该包。
paket add Serilog.Sinks.File --version 6.0.0                
#r "nuget: Serilog.Sinks.File, 6.0.0"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将此复制到交互式工具或脚本的源代码中以引用包。
// Install Serilog.Sinks.File as a Cake Addin
#addin nuget:?package=Serilog.Sinks.File&version=6.0.0

// Install Serilog.Sinks.File as a Cake Tool
#tool nuget:?package=Serilog.Sinks.File&version=6.0.0                

Serilog.Sinks.File 构建状态 NuGet 版本 文档

将 Serilog 事件写入一个或多个文本文件。

入门

从 NuGet 安装 Serilog.Sinks.File

dotnet add package Serilog.Sinks.File

要在 C# 代码中配置 sink,请在日志配置期间调用 WriteTo.File()

var log = new LoggerConfiguration()
    .WriteTo.File("log.txt", rollingInterval: RollingInterval.Day)
    .CreateLogger();

这将时间周期追加到文件名中,创建一个如下的文件集

log20180631.txt
log20180701.txt
log20180702.txt

注意:默认情况下,一次只有一个进程可以写入日志文件。有关多进程共享的信息,请参阅下方的 共享日志文件

限制

为了防止应用因磁盘使用量过大而崩溃,文件 sink 默认将文件大小限制在 1GB。达到限制后,直到下一次滚动点(另见下方的 滚动策略)之前,不会写入更多事件。

可以使用 fileSizeLimitBytes 参数更改或删除此限制。

    .WriteTo.File("log.txt", fileSizeLimitBytes: null)

出于同样的原因,默认情况下只保留最近的 31 个文件(即一个月)。要更改或删除此限制,请传递 retainedFileCountLimit 参数。

    .WriteTo.File("log.txt", rollingInterval: RollingInterval.Day, retainedFileCountLimit: null)

滚动策略

要按每天或其他时间周期创建日志文件,请指定如上例所示的 rollingInterval

要使文件达到 fileSizeLimitBytes 时滚动,请指定 rollOnFileSizeLimit

    .WriteTo.File("log.txt", rollOnFileSizeLimit: true)

这将创建一个如下的文件集

log.txt
log_001.txt
log_002.txt

同时指定 rollingIntervalrollOnFileSizeLimit 会应用两个策略,而指定两者均会导致所有事件写入单个文件。

将根据 retainedFileCountLimit 清理旧文件 - 默认为 31。

XML <appSettings> 配置

若要在代码中使用文件 sink 配置 Serilog.Settings.AppSettings 包,如果尚未这么做,请首先安装该包

Install-Package Serilog.Settings.AppSettings

而不是在代码中配置日志记录器,请调用 ReadFrom.AppSettings()

var log = new LoggerConfiguration()
    .ReadFrom.AppSettings()
    .CreateLogger();

在应用程序的 App.configWeb.config 文件中,在 <appSettings> 节下指定文件 sink 的程序集和所需的路径格式

<configuration>
  <appSettings>
    <add key="serilog:using:File" value="Serilog.Sinks.File" />
    <add key="serilog:write-to:File.path" value="log.txt" />

可以通过 serilog:write-to:File 键设置的参数是 WriteTo.File() 配置方法接受的参数。这意味着,例如,可以使用以下方式设置 fileSizeLimitBytes 参数:

    <add key="serilog:write-to:File.fileSizeLimitBytes" value="1234567" />

省略 value 会将参数设置为 null

    <add key="serilog:write-to:File.fileSizeLimitBytes" />

在 XML 和 JSON 配置格式中,可以在设置值时使用环境变量。这意味着,例如,日志文件路径可以基于 TMPAPPDATA

    <add key="serilog:write-to:File.path" value="%APPDATA%\MyApp\log.txt" />

JSON appsettings.json 配置

若要使用 Microsoft.Extensions.Configuration(如 ASP.NET Core 或 .NET Core)使用文件 sink,请使用 Serilog.Settings.Configuration 包。如果尚未安装,请先安装该包

Install-Package Serilog.Settings.Configuration

而不是直接在代码中配置文件,请调用 ReadFrom.Configuration()

var configuration = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .Build();

var logger = new LoggerConfiguration()
    .ReadFrom.Configuration(configuration)
    .CreateLogger();

在你的 appsettings.json 文件中,在 Serilog 节下

{
  "Serilog": {
    "WriteTo": [
      { "Name": "File", "Args": { "path": "log.txt", "rollingInterval": "Day" } }
    ]
  }
}

请参阅上方的 XML <appSettings> 示例,讨论了可用的 Args 选项。

控制事件格式化

文件 sink 默认以固定文本格式创建事件

2018-07-06 09:02:17.148 +10:00 [INF] HTTP GET / responded 200 in 1994 ms

格式通过使用 输出模板 控制,该模板是文件配置方法接受的作为 outputTemplate 参数。

上述默认格式对应于类似的输出模板

  .WriteTo.File("log.txt",
    outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}")
JSON 事件格式化

要将事件写入到文件中,使用其他格式,如 JSON,请传入 ITextFormatter 作为第一个参数

    // Install-Package Serilog.Formatting.Compact
    .WriteTo.File(new CompactJsonFormatter(), "log.txt")

共享日志文件

要启用多进程共享日志文件,将 shared 设置为 true

    .WriteTo.File("log.txt", shared: true)

审计

文件 sink 可通过 AuditTo 作为审计文件运行

    .AuditTo.File("audit.txt")

当前模式下的配置选项仅限于一个有限子集。

性能

默认情况下,文件目标将刷新通过其写入到磁盘的每个事件。为了提高写入性能,指定 buffered: true 将允许底层流缓冲写入。

可以使用 Serilog.Sinks.Async 包来包装文件目标,并在后台工作线程上执行所有磁盘访问。

扩展性

FileLifecycleHooks 提供了一个扩展点,允许挂钩到日志文件生命周期的不同部分。

您可以通过从 FileLifecycleHooks 扩展并重写 OnFileOpened 和/或 OnFileDeleting 方法来创建钩子。

  • OnFileOpened 在 Serilog 开始写入事件之前提供对写入日志事件的底层流的访问。您可以利用此功能将您自己的数据写入流(例如,写入标题行),或将流包装在另一个流中(例如,添加缓冲、压缩或加密)

  • OnFileDeleting 提供了一种处理已过时的滚动日志文件的方法,在 Serilog 的保留机制删除它们之前 - 例如,将日志文件存档到另一个位置

可用的钩子

版权所有 © 2016 Serilog 贡献者 - 在 Apache License, Version 2.0 许可下提供。

产品 兼容和额外的计算目标框架版本。
.NET net5.0已被计算。 net5.0-windows已被计算。 net6.0兼容。 net6.0-android已被计算。 net6.0-ios已被计算。 net6.0-maccatalyst已被计算。 net6.0-macos已被计算。 net6.0-tvos已被计算。 net6.0-windows已被计算。 net7.0已被计算。 net7.0-android已被计算。 net7.0-ios已被计算。 net7.0-maccatalyst已被计算。 net7.0-macos已被计算。 net7.0-tvos已被计算。 net7.0-windows已被计算。 net8.0兼容。 net8.0-android已被计算。 net8.0-browser已被计算。 net8.0-ios已被计算。 net8.0-maccatalyst已被计算。 net8.0-macos已被计算。 net8.0-tvos已被计算。 net8.0-windows已被计算。
.NET Core netcoreapp2.0已被计算。 netcoreapp2.1已被计算。 netcoreapp2.2已被计算。 netcoreapp3.0已被计算。 netcoreapp3.1已被计算。
.NET Standard netstandard2.0兼容。 netstandard2.1已被计算。
.NET Framework net461 已计算。 net462 兼容。 net463 已计算。 net47 已计算。 net471 兼容。 net472 已计算。 net48 已计算。 net481 已计算。
MonoAndroid monoandroid 已计算。
MonoMac monomac 已计算。
MonoTouch monotouch 已计算。
Tizen tizen40 已计算。 tizen60 已计算。
Xamarin.iOS xamarinios 已计算。
Xamarin.Mac xamarinmac 已计算。
Xamarin.TVOS xamarintvos 已计算。
Xamarin.WatchOS xamarinwatchos 已计算。
兼容的目标框架
包含的目标框架(在包中)
了解有关 目标框架.NET Standard 的更多信息。

NuGet 包 (1.1K)

显示依赖于 Serilog.Sinks.File 的排名前 5 的 NuGet 包

下载
Serilog.AspNetCore

Serilog 对 ASP.NET Core 日志记录的支持

Serilog.Sinks.RollingFile

Serilog 的滚动文件接收器

Serilog.Sinks.Elasticsearch

Serilog 的 Elasticsearch 接收器

Serilog.Sinks.Seq

Serilog 接收器,将事件写入 Seq,使用换行分隔的 JSON 和 HTTP/HTTPS。

Serilog.Sinks.Http

A Serilog 接收器通过 HTTP 发送日志事件。

GitHub 仓库 (345)

显示依赖Serilog.Sinks.File的前5个最受欢迎的GitHub仓库

仓库 星标
jellyfin/jellyfin
自由软件媒体系统
netchx/netch
一个简单的代理客户端
dotnet/runtime
.NET 是一个跨平台的云、移动、桌面和物联网应用运行时。
abpframework/abp
为 ASP.NET Core 开发的开源Web应用框架!提供了一种有见地的架构,以.NET为基础构建企业级软件解决方案的最佳实践。提供基本基础设施、横切关注点实现、启动模板、应用程序模块、UI主题、工具和文档。
IdentityServer/IdentityServer4
ASP.NET Core的OpenID Connect和OAuth 2.0框架
版本 下载 上次更新
6.0.0 1,031,672 6/22/2024
6.0.0-dev-00979 2,132 6/19/2024
5.0.1-dev-00976 1,599 6/17/2024
5.0.1-dev-00972 134,359 12/26/2023
5.0.1-dev-00968 153,825 9/28/2023
5.0.1-dev-00967 665 9/28/2023
5.0.1-dev-00966 635 9/28/2023
5.0.1-dev-00947 984,304 9/20/2021
5.0.0 215,950,888 6/25/2021
5.0.0-dev-00942 3,246 6/22/2021
5.0.0-dev-00940 5,409 6/22/2021
5.0.0-dev-00938 1,088 6/22/2021
5.0.0-dev-00935 1,032 6/22/2021
5.0.0-dev-00933 1,284 6/22/2021
5.0.0-dev-00930 1,175 6/22/2021
5.0.0-dev-00927 1,131 6/22/2021
5.0.0-dev-00920 5,361 6/15/2021
5.0.0-dev-00909 3,297,848 1/4/2021
5.0.0-dev-00905 225,266 11/10/2020
5.0.0-dev-00901 2,898 11/9/2020
5.0.0-dev-00887 294,818 7/23/2020
5.0.0-dev-00880 118,902 5/15/2020
5.0.0-dev-00876 21,309 4/29/2020
5.0.0-dev-00873 10,644 4/20/2020
5.0.0-dev-00870 26,435 4/13/2020
5.0.0-dev-00864 122,389 2/4/2020
5.0.0-dev-00862 24,763 2/4/2020
4.1.0 148,975,075 10/17/2019
4.1.0-dev-00860 1,490 12/16/2019
4.1.0-dev-00850 128,132 8/25/2019
4.1.0-dev-00847 72,375 7/16/2019
4.1.0-dev-00838 91,031 5/2/2019
4.1.0-dev-00833 9,521 4/22/2019
4.1.0-dev-00817 34,060 3/13/2019
4.1.0-dev-00806 18,856 1/17/2019
4.0.1-dev-00801 102,562 11/15/2018
4.0.1-dev-00798 83,522 9/21/2018
4.0.1-dev-00796 184,182 5/9/2018
4.0.1-dev-00795 27,368 3/6/2018
4.0.1-dev-00792 3,753 2/21/2018
4.0.1-dev-00790 30,788 11/29/2017
4.0.0 132,871,576 10/30/2017
4.0.0-dev-00788 3,548 10/16/2017
3.2.0 50,932,567 1/3/2017
3.2.0-dev-00766 2,705 11/29/2016
3.2.0-dev-00764 1,969 11/29/2016
3.2.0-dev-00762 5,240 11/27/2016
3.1.2-dev-00761 2,646 11/27/2016
3.1.1 244,639 11/15/2016
3.1.1-dev-00754 1,907 11/14/2016
3.1.0 1,380,999 10/9/2016
3.1.0-dev-00750 1,851 10/9/2016
3.1.0-dev-00747 2,637 10/6/2016
3.0.1 719,598 8/31/2016
3.0.1-dev-00741 1,883 8/30/2016
3.0.1-dev-00739 1,922 8/26/2016
3.0.0 242,965 8/26/2016
3.0.0-dev-00736 1,879 8/26/2016
3.0.0-dev-00735 2,759 8/19/2016
2.3.0-dev-00733 1,856 8/19/2016
2.3.0-dev-00729 1,880 8/17/2016
2.2.0 2,110,331 7/28/2016
2.2.0-dev-00725 2,197 7/28/2016
2.1.1-dev-00724 2,297 7/28/2016
2.1.0 120,756 7/4/2016
2.1.0-dev-714 1,921 7/4/2016
2.1.0-dev-713 1,904 7/4/2016
2.1.0-dev-00716 1,875 7/4/2016
2.0.0 595,966 6/28/2016
2.0.0-rc-706 3,875 5/17/2016
2.0.0-rc-704 12,464 5/17/2016
2.0.0-beta-700 6,853 3/23/2016
2.0.0-beta-519 2,194 3/16/2016
2.0.0-beta-516 2,058 3/15/2016
2.0.0-beta-513 1,836 3/15/2016
2.0.0-beta-511 1,846 3/14/2016
2.0.0-beta-509 1,935 3/13/2016
2.0.0-beta-507 6,782 3/1/2016
2.0.0-beta-505 4,574 2/25/2016
2.0.0-beta-502 2,196 2/22/2016
2.0.0-beta-499 1,981 2/21/2016
2.0.0-beta-495 1,918 2/19/2016
2.0.0-beta-494 1,830 2/18/2016
2.0.0-beta-493 1,856 2/18/2016
2.0.0-beta-487 1,993 2/16/2016
2.0.0-beta-486 2,475 2/11/2016
2.0.0-beta-479 1,890 2/9/2016
2.0.0-beta-478 2,115 2/9/2016
2.0.0-beta-465 24,184 1/26/2016