Logger
Log framework.
Log Types
The Audit log type will always be written to the database
Available Methods
- Verbose
- Debug
- Information
- Warning
- Error
- Fatal
- Email (only e-mail)
- EventLog (only Windows Event Log)
Create table
CREATE TABLE [Logs] (
[Id] bigint IDENTITY(1,1) NOT NULL,
[Message] nvarchar(max) NULL,
[MessageTemplate] nvarchar(max) NULL,
[Level] nvarchar(128) NULL,
[TimeStamp] datetime NOT NULL,
[Exception] nvarchar(max) NULL,
[Properties] nvarchar(max) NULL,
[Source] nvarchar(500) NULL,
[LogType] nvarchar(20) NULL,
[MachineName] nvarchar(500) NULL,
[EnvironmentUserName] nvarchar(500) NULL,
[UserNameLog] nvarchar(100) NULL,
[ContextName] nvarchar(max) NULL,
[EventName] nvarchar(500) NULL,
CONSTRAINT [PK_Logs] PRIMARY KEY CLUSTERED ([Id] ASC)
);
CREATE INDEX IX1_Logs ON dbo.Logs ([Source],[TimeStamp]);
Settings for using Logger
Add the JSON below to appsettings.json
{
"Logger": {
"MessageComplement": "Hml",
"FiltersFields": "senha,password,accesstoken,token",
"OutputTemplate": "[{Timestamp:dd/MM/yyyy HH:mm:ss} | {Level:u3}] [{LogType} | {MachineName} | {EnvironmentUserName} - {UserNameLog}] [{ContextName} | {EventName}]{NewLine}Message: {Message:lj}{NewLine}Error: {Exception}{NewLine}",
"MinimumLevel": "Verbose",
"Source": "LoggerTest",
"WriteToConsole": true,
"ElasticLog": {
"Url": "",
"MinimumLevel": "Verbose"
},
"EmailLog": {
"SmtpServer": "",
"SmtpPort": 0,
"EnableSsl": false,
"From": "",
"To": "",
"Subject": "",
"MinimumLevel": "Verbose"
},
"MongoDBLog": {
"ConnectionString": "",
"DBTableName": "",
"DBAuditTableName": "",
"MinimumLevel": "Verbose"
},
"MSTeamsLog": {
"Webhook": "",
"MinimumLevel": "Verbose"
},
"SqlServerLog": {
"ConnectionString": "",
"DBTableName": "",
"DBAuditTableName": "",
"MinimumLevel": "Verbose"
},
"TextLog": {
"Path": "",
"MinimumLevel": "Verbose"
}
}
}
Property |
Required |
Description |
MessageComplement |
No |
Message complement for all logs |
FiltersFields |
No |
Words to remove the value in a Json |
OutputTemplate |
No |
Template configuration that goes at the beginning of logs to .log files |
MinimumLevel |
Yes |
Indicates the minimum level that will be logged (Verbose, Debug, Information, Warning, Error, Fatal) |
Source |
No |
Start name of .log files |
WriteToConsole |
Yes |
Indicates that you will be logged into the application console |
ElascticLog (Object to log into Elasticsearch - no required)
Property |
Required |
Description |
Url |
No |
Elasticsearch URL |
MinimumLevel |
No |
Indicates the minimum level that will be logged into ElasticSearch (Verbose, Debug, Information, Warning, Error, Fatal) |
EmailLog (Object to log into E-mail - no required)
Property |
Required |
Description |
SmtpServer |
No |
SMTP Server |
SmtpPort |
No |
SMTP Port |
EnableSsl |
No |
Enable or disable SSL |
From |
No |
E-mail to "From" |
To |
No |
E-mail to "To |
Subject |
No |
E-mail subject |
MinimumLevel |
No |
Indicates the minimum level that will be logged into E-mail (Verbose, Debug, Information, Warning, Error, Fatal) |
MongoDBLog (Object to log into MongoDB - no required)
Property |
Required |
Description |
ConnectionString |
No |
ConnectionString where is the table that will store the logs |
DBTableName |
No |
Table name that will store the logs |
DBAuditTableName |
No |
Audit table name, if exists, that will store the logs |
MinimumLevel |
No |
Indicates the minimum level that will be logged into MongoDB (Verbose, Debug, Information, Warning, Error, Fatal) |
MSTeamsLog (Object to log into MS Teams - no required)
Property |
Required |
Description |
Webhook |
No |
URL to access MSTeams webhook |
MinimumLevel |
No |
Indicates the minimum level that will be logged into MS Teams (Verbose, Debug, Information, Warning, Error, Fatal) |
SqlServerLog (Object to log into Sql Server - no required)
Property |
Required |
Description |
ConnectionString |
No |
ConnectionString where is the table that will store the logs |
DBTableName |
No |
Table name that will store the logs |
DBAuditTableName |
No |
Audit table name, if exists, that will store the logs |
MinimumLevel |
No |
Indicates the minimum level that will be logged into Sql Server (Verbose, Debug, Information, Warning, Error, Fatal) |
TextLog (Object to log into text file - no required)
Property |
Required |
Description |
Path |
No |
Path where the .log files will be saved |
MinimumLevel |
No |
Indicates the minimum level that will be logged into text file (Verbose, Debug, Information, Warning, Error, Fatal) |
When Log Type is "Audit", MongoDBLog or SqlServerLog required.
Syntax Logger
All methods have the same syntax, we'll show you with the Verbose and Error method
LoggerClass.Verbose("<message>", "<userName>", <logType>, "<event>", "<context>");
Parameter |
Required |
Default Value |
Description |
message |
Yes |
|
Message that will be logged |
userName |
No |
|
Inform the user name that is generating the log |
logType |
No |
Application |
Log type enumerator described above |
event |
No |
null |
string that will be logged in the Event field |
context |
No |
null |
string that will be logged in the Context field |
LoggerClass.Error("<message>", "<userName>", <logType>, <exception>, "<event>", "<context>");
Parameter |
Required |
Default Value |
Description |
message |
Yes |
|
Message that will be logged |
userName |
No |
|
Inform the user name that is generating the log |
logType |
No |
Application |
Log type enumerator described above |
exception |
No |
null |
exception object |
event |
No |
null |
string that will be logged in the Event field |
context |
No |
null |
string that will be logged in the Context field |
Code Examples
using Solution.Framework.Logger.Classes;
using Solution.Framework.Logger.Enums;
using Microsoft.Extensions.Configuration;
class Program
{
static void Main(string[] args)
{
IConfiguration configuration = new ConfigurationBuilder()
.AddJsonFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..\\..\\..\\") + "\\appsettings.json")
.Build();
LoggerClass.Configuration = configuration;
LoggerClass.Source = null;
LoggerClass.Verbose("Logger Test", Environment.UserName);
LoggerClass.Verbose("Logger Test", Environment.UserName, LogTypeEnum.Application, "Event", "Context");
}
}
Where configuration is an IConfiguration object from appsettings.config described above. The Source property is optional, if it is null, the framework will get the value of appsettings.config.
Syntax EventLog
Method to write in Event Viewer (Application)
EventLogClass.Write("<message>", <eventLogEntryType>, <eventId>, <category>);
Parameter |
Required |
Default Value |
Description |
message |
Yes |
|
message to write to event viewer |
eventLogEntryType |
No |
Information |
message type |
eventId |
No |
0 |
Event Id |
category |
No |
0 |
Category |
Code Examples
using Solution.Framework.Logger.Classes;
class Program
{
static void Main(string[] args)
{
EventLogClass.Write("Message", EventLogEntryType.Information);
}
}