Jinget.Logger 3.0.0-preview001

Prefix Reserved
This is a prerelease version of Jinget.Logger.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Jinget.Logger --version 3.0.0-preview001                
NuGet\Install-Package Jinget.Logger -Version 3.0.0-preview001                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Jinget.Logger" Version="3.0.0-preview001" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Jinget.Logger --version 3.0.0-preview001                
#r "nuget: Jinget.Logger, 3.0.0-preview001"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Jinget.Logger as a Cake Addin
#addin nuget:?package=Jinget.Logger&version=3.0.0-preview001&prerelease

// Install Jinget.Logger as a Cake Tool
#tool nuget:?package=Jinget.Logger&version=3.0.0-preview001&prerelease                

Jinget Logger

Using this library, you can easily save your application logs in Elasticsearch database or files.

How to Use:

Download the package from NuGet using Package Manager: Install-Package Jinget.Logger You can also use other methods supported by NuGet. Check Here for more information.

Configuration

Config logging destination:

Elasticsearch:

LogToElasticSearch: By calling this method, you are going to save your logs in Elasticsearch

builder.Host.LogToElasticSearch<OperationLog, ErrorLog, CustomLog>(blacklist);

blacklist: Log messages contain the blacklist array items will not logged.

After setting the logging destination, you need to configure Elasticsearch:

builder.Services.ConfigureElasticSearchLogger<OperationLog, ErrorLog, CustomLog>(
    new ElasticSearchSettingModel
    {
        UserName = <authentication username>,
        Password = <authentication password>,
        Url = <ElasticSearch Url>,
        UseSsl = <true|false>,
        RegisterDefaultLogModels = <true|false>,
        DiscoveryTypes = new List<Type> { typeof(OperationLog) }
    });

Url: Elasticsearch service url. If authentication is enabled, this address should not contains the PROTOCOL itself. Use 'abc.com' instead of 'http://abc.com'

UserName: Username, if authentication enabled on Elasticsearch service

Password: Password, if authentication enabled on Elasticsearch service

UseSsl: Use HTTP or HTTPS, if authentication enabled on Elasticsearch service.

RegisterDefaultLogModels: You can configure logging using your own models instead of OperationLog, ErrorLog or CustomLog. In order to do so, you can simple create derived types and use them instead of these types. When you are working with your own custom types, if you want to create index for default log models, you can set the RegisterDefaultLogModels property to true, otherwise you can set it as false.

DiscoveryTypes: Foreach type specified in this list, an index in Elasticsearch will be created

And finally you need to add the Jinget.Logger middleware to your pipeline:

app.UseJingetLogging();

Here is the complete configuration for a .NET 7.0 Web API application:

using Jinget.Core.Filters;
using Jinget.Logger.Configuration;
using Jinget.Logger.Entities.Log;

var builder = WebApplication.CreateBuilder(args);

var config = new ConfigurationBuilder().AddJsonFile("appsettings.json", false, true).Build();

var blacklist = config.GetSection("logging:BlackList").Get<string[]>();
builder.Host.LogToElasticSearch<OperationLog, ErrorLog, CustomLog>(blacklist);

builder.Services.ConfigureElasticSearchLogger<OperationLog, ErrorLog, CustomLog>(
    new ElasticSearchSettingModel
    {
        UserName = "myuser",
        Password = "mypass",
        Url = "192.168.1.1:9200",
        UseSsl = false,
        RegisterDefaultLogModels = false,
        DiscoveryTypes = new List<Type> { typeof(OperationLog) }
    });
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();

var app = builder.Build();

app.UseJingetLogging();
app.MapControllers();
app.Run();

File:

LogToFile: By calling this method, you are going to save your logs in files

builder.Host.LogToFile(blacklist, fileNamePrefix: "Log-", logDirectory: "D:\\logs", 10, 15);

blacklist: Log messages contain the blacklist array items will not logged. FileNamePrefix: Gets or sets the filename prefix to use for log files. Defaults is logs- LogDirectory: The directory in which log files will be written, relative to the app process. Default is Logs directory. RetainedFileCountLimit: Gets or sets a strictly positive value representing the maximum retained file count or null for no limit. Defaults is 2 files. FileSizeLimit: Gets or sets a strictly positive value representing the maximum log size in MB or null for no limit. Once the log is full, no more messages will be appended. Defaults is 10MB.

After setting the logging destination, you need to configure Elasticsearch:

builder.Services.ConfigureFileLogger();

Here is the complete configuration for a .NET 7.0 Web API application:

using Jinget.Core.Filters;
using Jinget.Logger.Configuration;

var builder = WebApplication.CreateBuilder(args);

var config = new ConfigurationBuilder().AddJsonFile("appsettings.json", false, true).Build();

var blacklist = config.GetSection("logging:BlackList").Get<string[]>();
builder.Host.LogToFile(blacklist, "Log-", "D:\\logs", 10, 15);
builder.Services.ConfigureFileLogger();

builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();

var app = builder.Build();

app.UseJingetLogging();

app.UseAuthorization();
app.MapControllers();
app.Run();

How to install

In order to install Jinget Logger please refer to nuget.org

Contact Me

👨‍💻 Twitter: https://twitter.com/_jinget

📧 Email: farahmandian2011@gmail.com

📣 Instagram: https://www.instagram.com/vahidfarahmandian

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
8.0.0 110 1/22/2025
8.0.0-preview013 187 12/19/2024
8.0.0-preview012 82 12/19/2024
8.0.0-preview011 81 12/17/2024
8.0.0-preview010 88 12/16/2024
8.0.0-preview009 71 12/15/2024
8.0.0-preview008 94 11/25/2024
8.0.0-preview007 128 11/11/2024
8.0.0-preview006 108 11/2/2024
8.0.0-preview005 80 11/2/2024
8.0.0-preview004 84 11/1/2024
8.0.0-preview003 87 11/1/2024
8.0.0-preview002 75 11/1/2024
8.0.0-preview001 74 11/1/2024
6.2.23-preview003 79 10/31/2024
6.2.23-preview002 79 10/31/2024
6.2.22 116 10/26/2024
6.2.21 93 10/26/2024
6.2.20 97 10/26/2024
6.2.19-preview037 82 10/14/2024
6.2.19-preview036 78 9/30/2024
6.2.19-preview035 101 9/10/2024
6.2.19-preview034 94 9/9/2024
6.2.19-preview033 99 9/1/2024
6.2.19-preview032 101 9/1/2024
6.2.19-preview031 98 8/31/2024
6.2.19-preview029 98 8/26/2024
6.2.19-preview028 112 8/26/2024
6.2.19-preview027 120 8/26/2024
6.2.19-preview026 123 8/21/2024
6.2.19-preview025 116 8/21/2024
6.2.19-preview024 111 8/19/2024
6.2.19-preview023 97 8/8/2024
6.2.19-preview022 106 8/8/2024
6.2.19-preview021 80 8/5/2024
6.2.19-preview020 69 8/5/2024
6.2.19-preview019 80 8/5/2024
6.2.19-preview018 59 8/3/2024
6.2.19-preview017 76 7/30/2024
6.2.19-preview016 85 7/29/2024
6.2.19-preview015 86 7/29/2024
6.2.19-preview014 93 7/26/2024
6.2.19-preview013 93 7/20/2024
6.2.19-preview012 86 7/20/2024
6.2.19-preview011 104 6/15/2024
6.2.19-preview010 95 6/14/2024
6.2.19-preview009 93 6/14/2024
6.2.19-preview008 95 6/13/2024
6.2.19-preview007 93 6/13/2024
6.2.19-preview006 92 6/13/2024
6.2.19-preview005 89 6/13/2024
6.2.19-preview004 93 6/13/2024
6.2.19-preview003 98 6/11/2024
6.2.19-preview002 95 6/8/2024
6.2.19-preview001 98 6/8/2024
6.2.18 140 6/6/2024
6.2.18-preview020 103 6/6/2024
6.2.18-preview019 105 6/6/2024
6.2.18-preview018 109 6/6/2024
6.2.18-preview017 105 6/2/2024
6.2.18-preview016 103 6/1/2024
6.2.18-preview015 107 5/28/2024
6.2.18-preview014 106 5/28/2024
6.2.18-preview013 105 5/28/2024
6.2.18-preview012 105 5/28/2024
6.2.18-preview011 109 5/26/2024
6.2.18-preview010 105 5/26/2024
6.2.18-preview009 108 5/26/2024
6.2.18-preview008 107 5/26/2024
6.2.18-preview007 126 5/22/2024
6.2.18-preview006 104 5/22/2024
6.2.18-preview005 116 5/19/2024
6.2.18-preview004 108 5/19/2024
6.2.18-preview003 107 5/19/2024
6.2.18-preview002 109 5/19/2024
6.2.17 132 5/19/2024
6.2.16 120 5/18/2024
6.2.15 126 5/18/2024
6.2.14 129 5/18/2024
6.2.13 128 5/17/2024
6.2.12 130 5/17/2024
6.2.11 131 5/17/2024
6.2.10 127 5/17/2024
6.2.9 106 5/12/2024
6.2.8 122 5/9/2024
6.2.7 113 5/9/2024
6.2.6 127 5/7/2024
6.2.5 128 4/24/2024
6.2.4 205 2/1/2024
6.2.1 134 1/23/2024
6.2.0 122 1/23/2024
6.2.0-preview013 101 1/19/2024
6.2.0-preview012 93 1/19/2024
6.2.0-preview011 98 1/18/2024
6.2.0-preview010 104 1/14/2024
6.2.0-preview009 109 1/11/2024
6.2.0-preview008 116 1/1/2024
6.2.0-preview007 91 1/1/2024
6.2.0-preview006 104 1/1/2024
6.2.0-preview005 113 1/1/2024
6.2.0-preview001 127 12/30/2023
6.1.0 228 12/2/2023
6.1.0-preview003 136 12/2/2023
6.1.0-preview002 113 12/2/2023
6.1.0-preview001 132 12/2/2023
6.0.2 159 11/27/2023
6.0.1 161 11/22/2023
6.0.0 156 11/22/2023
3.5.0 185 10/28/2023
3.4.0 158 10/1/2023
3.3.1 171 9/30/2023
3.3.0 166 9/28/2023
3.2.5 163 9/28/2023
3.2.4 146 9/28/2023
3.2.3 155 9/28/2023
3.2.2 147 9/28/2023
3.2.1 147 9/28/2023
3.2.0 175 9/28/2023
3.1.0 160 9/27/2023
3.0.1 164 9/27/2023
3.0.0 167 9/14/2023
3.0.0-preview001 147 9/14/2023