DotNet.LogFilesMonitorArchiver
8.0.0
dotnet add package DotNet.LogFilesMonitorArchiver --version 8.0.0
NuGet\Install-Package DotNet.LogFilesMonitorArchiver -Version 8.0.0
<PackageReference Include="DotNet.LogFilesMonitorArchiver" Version="8.0.0" />
paket add DotNet.LogFilesMonitorArchiver --version 8.0.0
#r "nuget: DotNet.LogFilesMonitorArchiver, 8.0.0"
// Install DotNet.LogFilesMonitorArchiver as a Cake Addin #addin nuget:?package=DotNet.LogFilesMonitorArchiver&version=8.0.0 // Install DotNet.LogFilesMonitorArchiver as a Cake Tool #tool nuget:?package=DotNet.LogFilesMonitorArchiver&version=8.0.0
.NET Core Logging Files Monitor and Archiver
Long running services can generate lots of logging and temporary files. They become outdated and should be deleted by the dedicated period of time, like 180 days. ".NET Core Logging Files Monitor and Archiver" provides convenient and flexible features for log files archiving and removing.
".NET Core Logging Files Monitor and Archiver" is a long running monitor which scans file directories, archives them and deletes the old. It keeps file directories in tidy state by the rules.
Version 8.0.0
- Add support of .Net 8.x and netstandard 2.0/2.1
CLI Application edition of ".NET Core Logging Files Monitor and Archiver": https://www.nuget.org/packages/DotNet.LogFilesMonitorArchiver/
ASP.NET Core WebHost and Host edition of ".NET Core Logging Files Monitor and Archiver": https://www.nuget.org/packages/DotNet.Host.LogFilesMonitorArchiver/
Archive scenarios
The "DotNet.LogFilesMonitorArchiver" package allows to implement the following archive scenarios:
Monitoring the "SourcePath" directory by the list of search pattern "MonitoringNames" names.
For each matched file name in the "SourcePath" directory apply the rules:
- Move it into the archive directory "ArchivePath" if the file created date is older than configured "MoveToArchiveOlderThanDays" days (default value 7).
- Move it into the archive directory "ArchivePath" if the number of files is greater than configured "MoveToArchiveAfterReachingFiles" number S(default value is int.MaxValue).
- For each matched file name in the "ArchivePath" directory apply the rules:
- Delete it from the archive directory "ArchivePath" if the file created date is older than configured "DeleteFromArchiveOlderThanDays" days (default value 30).
- Delete it from the archive directory "ArchivePath" if the number of files is greater than configured "DeleteFromArchiveAfterReachingFiles" number (default value is int.MaxValue).
JSON Configuration
Here is example of the JSON configuration file that can be use to define configuration.
Example of the JSON configuration file:
{
"ArchiveProcessorConfig": {
"AutoTimerIntervalEnabled": "true",
"ArchiveOnStartup": "true",
"DelayArchiveInSecondsOnstartUp": 1,
"AutoTimerArchiveIntervalMin": 720,
"ArchiveRules": [
{
"SourcePath": "\\Logs\\AppExampleLogSource\\Stat",
"ArchivePath": "\\Logs\\AppExampleLogSource\\Stat\\Archive",
"MonitoringNames": [ "archive-able_*.xml", "*.csv" ],
"MoveToArchiveOlderThanDays": 14,
"MoveToArchiveAfterReachingFiles": 28,
"DeleteFromArchiveOlderThanDays": 180,
"DeleteFromArchiveAfterReachingFiles": 1000
},
{
"UseUtcTime":"false",
"SourcePath": "\\Logs\\AppExampleLogSource\\FatalError",
"ArchivePath": "\\Logs\\AppExampleLogSource\\FatalError\\Archive",
"MonitoringNames": [ "archive-able_*.xml", "*.trace" ],
"MoveToArchiveOlderThanDays": 7,
"DeleteFromArchiveOlderThanDays": 360
}
]
}
}
Console application Example
Use https://www.nuget.org/packages/DotNet.LogFilesMonitorArchiver/ package.
Example of the code to load configuration file:
public ArchiveProcessorConfig LoadConfiguration(string name)
{
ArchiveProcessorConfig config = null;
string path = GetBasePath();
path = Path.Combine(path, name);
var build = new ConfigurationBuilder().AddJsonFile(path, false);
var cfg = build.Build();
var achiveConfig = cfg.GetSection(nameof(ArchiveProcessorConfig));
config = achiveConfig.Get<ArchiveProcessorConfig>();
path = GetBasePath();
return config;
}
private string GetBasePath()
{
var assembly = GetType().GetTypeInfo().Assembly;
return Path.GetDirectoryName(assembly.Location);
}
Automatic mode
Example of the code to activate the Archive Processor in Automatic mode: For automatic mode you have to ensure that in configuration has been setup: "AutoTimerIntervalEnabled": "true",
static FilesArchiveProcessor _filesArchiveProcessor;
...
ArchiveProcessorConfig config = LoadConfiguration("FilesArchiveProcessor.json");
// Ensure that Auto Timer Interval has been enabled
config.AutoTimerIntervalEnabled = true;
_filesArchiveProcessor = new FilesArchiveProcessor(config);
...
Automatic mode with delayed start
Example of the code to activate the Archive Processor in Automatic mode: For automatic mode you have to ensure that in configuration has been setup: "AutoTimerIntervalEnabled": "true",
static FilesArchiveProcessor _filesArchiveProcessor;
...
ArchiveProcessorConfig config = LoadConfiguration("FilesArchiveProcessor.json");
// Ensure that Auto Timer Interval has been enabled
config.AutoTimerIntervalEnabled = true;
_filesArchiveProcessor = new FilesArchiveProcessor(config,false);
...
// start later some where
var task = _filesArchiveProcessor.StartAsync();
Manual mode
Example of the code to activate the Archive Processor in Manual mode:
static FilesArchiveProcessor _filesArchiveProcessor;
...
ArchiveProcessorConfig config = LoadConfiguration("FilesArchiveProcessor.json");
// Ensure that Auto Timer Interval has been disabled
config.AutoTimerIntervalEnabled = false;
_filesArchiveProcessor = new FilesArchiveProcessor(config);
...
var taskA = _filesArchiveProcessor.LaunchArchiveFilesAsync();
...
var taskD = _filesArchiveProcessor.LaunchDeleteFromArchiveFilesAsync();
Hosted by WebHost or Host
Use https://www.nuget.org/packages/DotNet.Host.LogFilesMonitorArchiver/ package.
Create separate configuration file or add to existing appsettings.config the root configuration section with name "ArchiveProcessorConfig".
Example of the configuration section:
{
"ArchiveProcessorConfig": {
"AutoTimerIntervalEnabled": "true",
"ArchiveOnStartup": "true",
"DelayArchiveInSecondsOnstartUp": 1,
"AutoTimerArchiveIntervalMin": 720,
"ArchiveRules": [
{
"SourcePath": "\\Logs\\AppExampleLogSource\\Stat",
"ArchivePath": "\\Logs\\AppExampleLogSource\\Stat\\Archive",
"MonitoringNames": [ "archive-able_*.xml", "*.csv" ],
"MoveToArchiveOlderThanDays": 14,
"MoveToArchiveAfterReachingFiles": 28,
"DeleteFromArchiveOlderThanDays": 180,
"DeleteFromArchiveAfterReachingFiles": 1000
},
{
"UseUtcTime":"false",
"SourcePath": "\\Logs\\AppExampleLogSource\\FatalError",
"ArchivePath": "\\Logs\\AppExampleLogSource\\FatalError\\Archive",
"MonitoringNames": [ "archive-able_*.xml", "*.trace" ],
"MoveToArchiveOlderThanDays": 7,
"DeleteFromArchiveOlderThanDays": 360
}
]
}
}
When configuring services add the following initialization code into:
public ... ConfigureServices(IServiceCollection services)
{
...
services.AddLogFilesMonitorArchiver();
...
}
or When configuring services add the following initialization code into when you want to set a configuration section name :
public ... ConfigureServices(IServiceCollection services)
{
...
services.AddLogFilesMonitorArchiver("SectionOfArchiveProcessorConfig");
...
}
Host Automatic mode
For automatic mode you have to ensure that in configuration has been setup: "AutoTimerIntervalEnabled": "true"
Manual modes
Other modes can be achieved by using DI i.e. service provider to get instance of singleton of class FilesArchiveHostedService.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
-
.NETStandard 2.1
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on DotNet.LogFilesMonitorArchiver:
Package | Downloads |
---|---|
DotNet.Host.LogFilesMonitorArchiver
ASP.NET Core WebHost and Host edition of ".NET Core Logging Files Monitor and Archiver". It is a long running monitor which scans file directories, archives them and deletes the old. It keeps file directories in tidy state by the rules. Visit GitHub project for more information. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
8.0.0 | 85 | 12/8/2024 |
6.0.0 | 1,391 | 8/3/2022 |
5.0.0 | 1,466 | 2/7/2021 |
3.1.0 | 1,545 | 10/3/2020 |
3.0.0 | 1,616 | 10/17/2019 |
2.4.0 | 1,699 | 3/24/2019 |
2.3.1 | 1,901 | 9/24/2018 |
2.3.0 | 2,089 | 6/4/2018 |
2.2.0 | 2,115 | 4/29/2018 |
2.1.0 | 2,047 | 1/10/2018 |
2.0.1 | 1,744 | 9/25/2017 |
2.0.0 | 1,794 | 8/29/2017 |
1.2.0 | 1,930 | 8/10/2017 |
1.1.0 | 1,938 | 7/23/2017 |
Released only for netstandard2.0/2.1. Singed assembly.