Type: Question
NLog version:
<PackageReference Include="NLog" Version="5.0.0-beta09" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.0.0-rtm-beta5" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.4.1" />
Platform: ASP.NET Core 1.1
Current NLog config (database target is very similar to the example from https://github.com/nlog/NLog/wiki/Database-target)
<?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:\temp\internal.txt">
<!-- define various log targets -->
<targets>
<!-- write logs to file -->
<target xsi:type="File" name="allfile" fileName="c:\temp\nlog-all-${shortdate}.log"
layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
<target xsi:type="File" name="ownFile" fileName="c:\temp\nlog-own-${shortdate}.log"
layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
<target xsi:type="Null" name="blackhole" />
<target xsi:type="Database" name="database" >
<dbHost>(localdb)\MSSQLLocalDB</dbHost>
<dbDatabase>BvsDbContext</dbDatabase>
<commandText>
insert into dbo.Log (
Application, Logged, Level, Message,
Username,
ServerName, Port, Url, Https,
ServerAddress, RemoteAddress,
Logger, CallSite, Exception
) values (
@Application, @Logged, @Level, @Message,
@Username,
@ServerName, @Port, @Url, @Https,
@ServerAddress, @RemoteAddress,
@Logger, @Callsite, @Exception
);
</commandText>
<parameter name="@application" layout="${appsetting:name=AppName:default=Unknown}" />
<parameter name="@logged" layout="${date}" />
<parameter name="@level" layout="${level}" />
<parameter name="@message" layout="${message}" />
<parameter name="@username" layout="${identity}" />
<parameter name="@serverName" layout="${aspnet-Request:serverVariable=SERVER_NAME}" />
<parameter name="@port" layout="${aspnet-Request:serverVariable=SERVER_PORT}" />
<parameter name="@url" layout="${aspnet-Request:serverVariable=HTTP_URL}" />
<parameter name="@https" layout="${when:inner=1:when='${aspnet-request:serverVariable=HTTPS}' == 'on'}${when:inner=0:when='${aspnet-request:serverVariable=HTTPS}' != 'on'}" />
<parameter name="@serverAddress" layout="${aspnet-Request:serverVariable=LOCAL_ADDR}" />
<parameter name="@remoteAddress" layout="${aspnet-Request:serverVariable=REMOTE_ADDR}:${aspnet-request:serverVariable=REMOTE_PORT}" />
<parameter name="@logger" layout="${logger}" />
<parameter name="@callSite" layout="${callsite}" />
<parameter name="@exception" layout="${exception:tostring}" />
</target>
</targets>
<rules>
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="allfile" />
<logger name="*" minlevel="Trace" writeTo="database" />
<!--Skip Microsoft logs and so log only own logs-->
<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
<logger name="*" minlevel="Trace" writeTo="ownFile" />
</rules>
</nlog>
I'm trying to log to table in a SQL Server database, but some layout renderers cannot be found:
2017-08-03 14:21:25.4611 Error Error parsing layout appsetting will be ignored. Exception: System.ArgumentException: LayoutRenderer cannot be found: 'appsetting'
at NLog.Config.Factory`2.CreateInstance(String name)
at NLog.Layouts.LayoutParser.ParseLayoutRenderer(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr)
2017-08-03 14:21:25.5153 Error Error parsing layout identity will be ignored. Exception: System.ArgumentException: LayoutRenderer cannot be found: 'identity'
at NLog.Config.Factory`2.CreateInstance(String name)
at NLog.Layouts.LayoutParser.ParseLayoutRenderer(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr)
2017-08-03 14:21:25.5223 Error Error parsing layout aspnet-Request will be ignored. Exception: System.ArgumentException: LayoutRenderer cannot be found: 'aspnet-Request'. Is NLog.Web not included?
at NLog.Config.Factory`2.CreateInstance(String name)
at NLog.Layouts.LayoutParser.ParseLayoutRenderer(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr)
2017-08-03 14:21:25.5223 Error Error parsing layout aspnet-Request will be ignored. Exception: System.ArgumentException: LayoutRenderer cannot be found: 'aspnet-Request'. Is NLog.Web not included?
at NLog.Config.Factory`2.CreateInstance(String name)
at NLog.Layouts.LayoutParser.ParseLayoutRenderer(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr)
2017-08-03 14:21:25.5223 Error Error parsing layout aspnet-Request will be ignored. Exception: System.ArgumentException: LayoutRenderer cannot be found: 'aspnet-Request'. Is NLog.Web not included?
at NLog.Config.Factory`2.CreateInstance(String name)
at NLog.Layouts.LayoutParser.ParseLayoutRenderer(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr)
2017-08-03 14:21:25.5223 Error Error parsing layout aspnet-request will be ignored. Exception: System.ArgumentException: LayoutRenderer cannot be found: 'aspnet-request'. Is NLog.Web not included?
at NLog.Config.Factory`2.CreateInstance(String name)
at NLog.Layouts.LayoutParser.ParseLayoutRenderer(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr)
2017-08-03 14:21:25.5373 Error Error parsing layout aspnet-request will be ignored. Exception: System.ArgumentException: LayoutRenderer cannot be found: 'aspnet-request'. Is NLog.Web not included?
at NLog.Config.Factory`2.CreateInstance(String name)
at NLog.Layouts.LayoutParser.ParseLayoutRenderer(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr)
2017-08-03 14:21:25.5373 Error Error parsing layout aspnet-Request will be ignored. Exception: System.ArgumentException: LayoutRenderer cannot be found: 'aspnet-Request'. Is NLog.Web not included?
at NLog.Config.Factory`2.CreateInstance(String name)
at NLog.Layouts.LayoutParser.ParseLayoutRenderer(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr)
2017-08-03 14:21:25.5373 Error Error parsing layout aspnet-Request will be ignored. Exception: System.ArgumentException: LayoutRenderer cannot be found: 'aspnet-Request'. Is NLog.Web not included?
at NLog.Config.Factory`2.CreateInstance(String name)
at NLog.Layouts.LayoutParser.ParseLayoutRenderer(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr)
2017-08-03 14:21:25.5373 Error Error parsing layout aspnet-request will be ignored. Exception: System.ArgumentException: LayoutRenderer cannot be found: 'aspnet-request'. Is NLog.Web not included?
at NLog.Config.Factory`2.CreateInstance(String name)
at NLog.Layouts.LayoutParser.ParseLayoutRenderer(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr)
@ndreisg When you look at the error message LayoutRenderer cannot be found, then it also asks you Is NLog.Web not included?
Have you tried to add <extentions> to your nlog.config:
<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:\temp\internal.txt">
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
</extensions>
.....
</nlog>
https://github.com/NLog/NLog.Web/wiki/Getting-started-with-ASP.NET-Core-(csproj---vs2017)
I have tried this and most exceptions now disappeared (only the "identity" renderer still can't be found).
However, the fields in my table are still not filled :/
However, the fields in my table are still not filled :/
That's probably some missing code in the startup.cs, please check
https://github.com/NLog/NLog.Web/wiki/Getting-started-with-ASP.NET-Core-(csproj---vs2017)
@ndreisg ${identity} is not supported by NetCore as shown by the platform support:
https://github.com/NLog/NLog/wiki/platform-support
Maybe ${aspnet-user-identity} can help you out, or maybe create your own custom layout-renderer with some help from stackoverflow:
https://stackoverflow.com/questions/30701006/how-to-get-the-current-logged-in-user-id-asp-net-core
To diagnose the problems with writing to database, then activate and check the NLog-InternalLogger. Maybe you need the following package-reference for the mssql-database:
<PackageReference Include="System.Data.SqlClient" Version="4.3.1" />
I assume your question has been answered, if not, let us know!