MsSqlLoggerService 1.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package MsSqlLoggerService --version 1.1.0
NuGet\Install-Package MsSqlLoggerService -Version 1.1.0
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="MsSqlLoggerService" Version="1.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MsSqlLoggerService --version 1.1.0
#r "nuget: MsSqlLoggerService, 1.1.0"
#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 MsSqlLoggerService as a Cake Addin
#addin nuget:?package=MsSqlLoggerService&version=1.1.0

// Install MsSqlLoggerService as a Cake Tool
#tool nuget:?package=MsSqlLoggerService&version=1.1.0

MsSQLLoggerService


This service implements the ILoggerService from the MethodResultWrapper nuGet package using an Ms Sql database table as persistence layer

The service is implemented as a singleton

You can get an instance of the service by calling the static MsSqlLoggerService.GetInstance method

Pre-conditions for this service to work property


The connection string provided should allow inserting rows into a table that should conform to the following DDL.

Loggin table definition example

CREATE TABLE [dbo].[Log] ( Id [int] IDENTITY(1,1) NOT NULL, [UserId] varchar NULL, [CompanyId] varchar NULL, [SeverityCode] char NOT NULL, [MachineName] varchar NOT NULL, [Context] varchar NOT NULL, [Message] nvarchar NOT NULL, [CreateDateUtc] [datetime] NOT NULL,

CONSTRAINT [PK_Log] 
	PRIMARY KEY CLUSTERED [Id] DESC

);

Columns

Id

The Id column is not required and will not be populted by the service. However it might be convenient to have a primary column sorted DESC so that the last logs will be at the top of a select statement by default. If you define this column make sure the database will fill it accordingly by for example using the IDENTITY keyword

UserId (default column name)

  • You can provide your own column name for this column
  • The userId column persists the identification of the connected user if any.
  • This column should be nullable.
  • This column should be of type varchar
  • The logger will truncate any info exceding the max column length

CompanyId (default column name)

  • You can provide your own column name for this column
  • The companyId column persists the identification of the company of the connected user if any.
  • This column should be nullable.
  • This column should be of type varchar
  • The logger will truncate any info exceding the max column length

SeverityCode (default column name)

  • You can provide your own column name for this column
  • The SeverityCode column persists the MethodResultWrapper.SeverityEnum code
  • This column should be non nullable.
  • This column should be of type char (one char is enough)

MachineName (default column name)

  • You can provide your own column name for this column
  • The CompanyName column persists Environment.MachineName.
  • This column should be non nullable.
  • This column should be of type varchar
  • The logger will truncate any info exceding the max column length

Context (default column name)

  • You can provide your own column name for this column
  • The Context column persists class file, method name and code line number.
  • This column should be non nullable.
  • This column should be of type varchar
  • The logger will truncate any info exceding the max column length

Message (default column name)

  • You can provide your own column name for this column
  • The Message column persists the message info.
  • This column should be non nullable.
  • This column should be of type nvarchar(MAX)

CreateDateUtc (default column name)

  • You can provide your own column name for this column
  • The Message column persists the UTC date.
  • This column should be non nullable.
  • This column should be of type datetime

Usage


See here after how to invoke the GetInstance method for getting a (singleton) instance of the logger.

Example 1 : providing your own values for the schema, table and column names

private static void Main(string[] args) { const string cs = "data source=Localhost;initial catalog=MyLoggingMsSqlDb;" + "integrated security=True;MultipleActiveResultSets=True;";

var ls = Logger.GetInstance(
    cs,
    SeverityEnum.Debug,
    "dbo", // table schema
    "Log", // table name
    "UserId", // userId column name
    "CompanyId", // companyId column name
    "MachineName", // machineName column name
    "SeverityCode", // severityCode column name
    "Context", // context column name
    "Message", // message column name
    "CreateDateUtc", // createDateUtc column name
    "me", // userId (can be set at construction time and updated later
    "myCompany" // companyId (can be set at construction time and updated later
	);

ls.Log(new Exception());

Console.WriteLine("hit enter to quit");
Console.ReadLine();

}

Example 2 : using all default values

private static void Main(string[] args) { const string cs = "data source=Localhost;initial catalog=MyLoggingMsSqlDb;" + "integrated security=True;MultipleActiveResultSets=True;";

var ls = Logger.GetInstance(
    cs,
    SeverityEnum.Debug);

ls.Log(new Exception());

Console.WriteLine("hit enter to quit");
Console.ReadLine();

}

Product Compatible and additional computed target framework versions.
.NET Framework net461 is compatible.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 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
1.2.3 493 6/10/2020
1.2.2 411 3/27/2020
1.2.1 623 3/21/2020
1.2.0 527 3/8/2020
1.1.0 421 3/8/2020
1.0.0 435 3/8/2020

gitHub link added