Wednesday, 2 January 2019

.Net Core console app with NLOG

In this post I am going to create simple minimalistic dotnet core console application and integrate it with nlog.

Let's create a folder for our project. I am going to name it nlog_console.

$mkdir nlog_console
$cd nlog_console

Now we create dotnet core console app project and if you have Visual Studio Code installed run the second command below.

$dotnet new console
$code . &

Now lets add nlog package to a project.

$dotnet add package nlog

This will add the following code to our project file.

<ItemGroup>
<PackageReference Include="nlog" Version="4.5.6" />
</ItemGroup>

Nlog framework requires configuration file 'nlog.config' to specify logger tagerts and rules. We can copy paste the sample nlog.config file from this github page or use one below.

<xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xsi:schemaLocation="NLog NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
internalLogFile="console-example-internal.log"
internalLogLevel="Info" >
<targets>
<target xsi:type="File" name="file"
fileName="console-example.log"
layout="${date}|${level:uppercase=true}|${message} ${exception}|${logger}|${all-event-properties}" />
<target xsi:type="Console" name="console"
layout="${date}|${level:uppercase=true}|${message} ${exception}|${logger}|${all-event-properties}" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="file,console" />
</rules>
</nlog>

'nlog.config' file need to be copied to destination directory during project build. To achieve it add the code below to a project file.

<ItemGroup>
<None Include="nlog.config" CopyToOutputDirectory="Always" />
<ItemGroup>

Now we need to add actual logging code to a program. Copy paste the Program class code below.

using System;
namespace dotnetcore_nlog
{
class Program
{
private static NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
log.Trace("Loggin trace.");
}
}
}
view raw hello_nlog.cs hosted with ❤ by GitHub

To build and run our console app run code below or add launch.json config to Visual Studio Code.

$dotnet build
$dotnet run

You should see the following output and log file created in the same directory as our console app.

2018/06/19 18:48:13.130|TRACE|Loggin trace. |nlog_console.Program|

References:


3 comments:

  1. Just a few typos (leading question mark in xml version header and ItemGroup closing tag).
    Other than that - nice and short sample - thanks.

    ReplyDelete
    Replies
    1. Thanks, fixed up the leading question mark in xml version header in nlog.config. ItemGroup closing tags look fine to me. Please create a pull request with your fix if you see the issue. Thanks again.

      Delete