« Nlog » : différence entre les versions
Apparence
Ligne 153 : | Ligne 153 : | ||
] | ] | ||
</kode> | </kode> | ||
= Levels = | |||
{| class="wikitable wtp" | |||
! Level | |||
! Description | |||
|- | |||
| FATAL || Fatal error messages. After a fatal error, the application usually terminates | |||
|- | |||
| ERROR || Error messages | |||
|- | |||
| WARN || Warnings which don't appear to the user of the application | |||
|- | |||
| INFO || Informational messages | |||
|- | |||
| DEBUG || Less detailed and/or less frequent debugging messages | |||
|- | |||
| TRACE || Very detailed log messages, potentially of a high frequency and volume | |||
|} |
Version du 17 mars 2023 à 10:12
Links
Console project
Nuget packages
- NLog.Extensions.Logging
- Microsoft.Extensions.DependencyInjection
- Microsoft.Extensions.Configuration.Json
Config file
![]() |
Be sure to have the config file copied to the output folder while building. |
appsettings.json |
Program
Program.cs |
var logger = LogManager.GetCurrentClassLogger();
try
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.Build();
// to log in this class only
LogManager.Configuration = new NLogLoggingConfiguration(config.GetSection("NLog"));
using var servicesProvider = new ServiceCollection()
.AddTransient<MyApp>()
.AddLogging(loggingBuilder =>
{
// configure Logging with NLog
loggingBuilder.ClearProviders();
loggingBuilder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
loggingBuilder.AddNLog(config);
}).BuildServiceProvider();
var myApp = servicesProvider.GetRequiredService<MyApp>();
myApp.Run();
}
catch (Exception ex)
{
// NLog: catch any exception and log it.
logger.Error(ex, "Stopped program because of exception");
throw;
}
finally
{
// Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)
LogManager.Shutdown();
}
|
Configuration file
Layout
// default layout
"layout": "${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true}"
|
Target
ColoredConsole
appsettings.json |
"async": true, // use the asynchronous NLog Console Target
"console": {
"type": "ColoredConsole",
"layout": "${level:uppercase=true} - ${logger} - ${message:withexception=true}",
"useDefaultRowHighlightingRules": false,
"rowHighlightingRules": [
{
"condition": "level == LogLevel.Fatal",
"foregroundColor": "Blue",
"backgroundColor": "White"
}
]
}
|
File
appsettings.json |
"file": {
"type": "File",
"fileName": "${basedir}/logs/nlog.log",
// Global Mutex Locks
"keepFileOpen": true,
"concurrentWrites": true,
// Size-based file archival
"archiveFileName": "${basedir}/archives/nlog.{#####}.log",
"archiveAboveSize": 10240,
"maxArchiveFiles": 4,
"archiveNumbering": "Rolling"
}
|
Rules
"rules": [
{
"logger": "*",
"minLevel": "Info",
"writeTo": "console, file"
},
{
"logger": "*",
"levels": "Debug",
"writeTo": "file"
}
]
|
Filters
Filters apply the default action except for the matching conditions.
"rules": [
{
"logger": "*",
"minLevel": "Info",
"writeTo": "console, file",
"filterDefaultAction": "Log",
"filters": [
{
"type": "when",
"condition": "contains('${message}','Common')",
"action": "Ignore"
}
]
}
]
|
Levels
Level | Description |
---|---|
FATAL | Fatal error messages. After a fatal error, the application usually terminates |
ERROR | Error messages |
WARN | Warnings which don't appear to the user of the application |
INFO | Informational messages |
DEBUG | Less detailed and/or less frequent debugging messages |
TRACE | Very detailed log messages, potentially of a high frequency and volume |