ASPNET Core 2.0 with latest Nlog.
All config files load correctly.
My config file is simple, I just want it to log every thing.
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
internalLogLevel="Warn"
internalLogFile="C:\wwwLogs\nlog.log">
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
</extensions>
<targets>
<target xsi:type="File" name="allfile" fileName="C:\wwwLogs\${shortdate}.log"
maxArchiveFiles="90"
archiveNumbering="DateAndSequence"
archiveAboveSize="250000"
archiveFileName="archive/log.{#######}.log"
archiveEvery="Day"
concurrentWrites="true"
layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
</targets>
<rules>
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="allfile" />
</rules>
</nlog>
I can see it in the trace log for nlog it is setting all levels to the correct output.
2017-11-01 14:21:26.3017 Trace Opening C:\wwwLogs\2017-11-01.log with allowFileSharedWriting=False
2017-11-01 14:21:28.5859 Debug Targets for TimeSlotApprovalService by level:
2017-11-01 14:21:28.5859 Debug Trace => allfile
2017-11-01 14:21:28.5859 Debug Debug => allfile
2017-11-01 14:21:28.5859 Debug Info => allfile
2017-11-01 14:21:28.5859 Debug Warn => allfile
2017-11-01 14:21:28.5859 Debug Error => allfile
2017-11-01 14:21:28.5859 Debug Fatal => allfile
In my application when I call this
_logger.LogDebug(JsonConvert.SerializeObject(resultList, Formatting.Indented));
_logger.LogError(JsonConvert.SerializeObject(resultList, Formatting.Indented));
_logger.LogCritical(JsonConvert.SerializeObject(resultList, Formatting.Indented));
_logger.LogWarning(JsonConvert.SerializeObject(resultList, Formatting.Indented));
_logger.LogTrace(JsonConvert.SerializeObject(rankedTimeSlots, Formatting.Indented));
Then the log file only logs these
2017-11-01 14:44:48.2570|TimeSlotApprovalService|**ERROR**|[json...
2017-11-01 14:44:48.2570|TimeSlotApprovalService|**FATAL**|[json...
2017-11-01 14:44:48.2570|TimeSlotApprovalService|**WARN**|[json...
Where are the rest?? Trace and Debug?? Info?
NLog supports the following levels: Trace - Very detailed log messages, potentially of a high frequency and volume. Debug -Less detailed and/or less frequent debugging messages. Info - Informational messages.
NLog supports semantic/structured logging known from similar frameworks like Serilog and Microsoft. Extensions. Logging. With structured logging, you no longer log just simple text messages.
NLog 1.0 supports asynchronous logging, but there is no good support for asynchronous exception handling. This is because wrappers targets are not capable of receiving exceptions which are raised on other threads.
ASP.NET Core and its logging system Microsoft.Extensions.Logging
use a central configuration. This configuration applies regardless of the attached logging providers. So if you use NLog as a logging provider, you will still have to configure the logging infrastructure.
By default, the web host builder will automatically use the configuration within the appsettings.json
to configure the logging verbosity. And in the default template, this is what the configuration looks like:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
}
}
So the default minimum log level to log is Warning
. So even if you configure your NLog provider to log at any logging level, it won’t actually receive logging instructions lower than Warning
from the logging system.
So you will have to adjust the configuration there to change it. Set it to Trace
and it should log everything.
Note that you should still consider using the configuration there as the source of truth on what log levels should be logged. So just keep your NLog configuration to log whatever it gets, and then adjust your appsettings.json
to match whatever you want to actually log, depending on the current enviroment (you can create files like appsettings.Development.json
and appsettings.Production.json
to create environment-specific configurations).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With