2

I have a question relating the configuration of Serilog by appSettings.json. My project is a console application, based on .Net Core 3.0. I tried to setup Serilog in order to write log information to the console and to a log file.

When I configure everything within my code itself - everything works like expected.

But when I try to import the Serilog configuration settings from an appsettings.json file, I have the problem, that my ConsoleSink works fine, but my FileSink not.

Here is, what I wrote into my appsettings.json:

{ "Serilog": { "Using": [ "Serilog.Sinks.File", "Serilog.Sinks.Console" ], "MinimumLevel": "Debug", "WriteTo": [ { "Name": "File", "Args": { "pathFormat": "Xlog.txt" } }, { "Name": "Console" } ] } } 

And this is the associated code:

 IConfiguration configSerilog = new ConfigurationBuilder() .AddJsonFile("appsettings.json", true, true) .Build(); log = new LoggerConfiguration() .ReadFrom.Configuration(configSerilog) .CreateLogger(); log.Information("Initializing Serilog...."); 

My 'test-log-message' get's displayed in my console window, but I didn't get a logfile.

As I mentioned, it works, when I configure the Serilog in my code itself, rather than by the appsettings. So, I do have the appropriate access rights to create a file.

Any ideas or hints?

1
  • 1
    search Serilog SelfLog and/or use Sysinternals Filemon Commented Dec 6, 2019 at 15:50

1 Answer 1

6

Make sure that file proprieties for appsettings.json, property "Copy to Output Directory" is "Copy always" or "Copy if Newer".

And update youe configration as below (pathFormat in Args shoud be path)

{ "Serilog": { "Using": [ "Serilog.Sinks.File", "Serilog.Sinks.Console" ], "MinimumLevel": "Debug", "WriteTo": [ { "Name": "File", "Args": { "path": "Xlog.txt" } }, { "Name": "Console" } ] } } 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.