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
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />
paket add Serilog.Sinks.File --version 6.0.0
#r "nuget: Serilog.Sinks.File, 6.0.0"
// 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
将 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
同时指定 rollingInterval
和 rollOnFileSizeLimit
会应用两个策略,而指定两者均会导致所有事件写入单个文件。
将根据 retainedFileCountLimit
清理旧文件 - 默认为 31。
XML <appSettings>
配置
若要在代码中使用文件 sink 配置 Serilog.Settings.AppSettings 包,如果尚未这么做,请首先安装该包
Install-Package Serilog.Settings.AppSettings
而不是在代码中配置日志记录器,请调用 ReadFrom.AppSettings()
var log = new LoggerConfiguration()
.ReadFrom.AppSettings()
.CreateLogger();
在应用程序的 App.config
或 Web.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 配置格式中,可以在设置值时使用环境变量。这意味着,例如,日志文件路径可以基于 TMP
或 APPDATA
<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 的保留机制删除它们之前 - 例如,将日志文件存档到另一个位置
可用的钩子
- serilog-sinks-file-header:在每份日志文件的开始处写入标题
- serilog-sinks-file-gzip:使用流式 GZIP 压缩在写入日志时压缩日志
- serilog-sinks-file-archive:在 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 已计算。 |
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 |