一、增加引用
<PackageReference Include="NLog.Extensions.Logging" Version="1.2.1" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.6.0" />
二、配置nlog.config
<?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="Logs/internal-nlog.txt"> <!-- define various log targets --> <targets> <!-- write logs to file --> <target xsi:type="File" name="allfile" fileName="Logs/${date:format=yyyyMM}/nlog-all-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId.Id}|${uppercase:${level}}|${logger} ${newline}${message} ${exception} ${newline}" /> <target xsi:type="File" name="ownFile-web" fileName="Logs/${date:format=yyyyMM}/nlog-own-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId.Id}|${uppercase:${level}}|${logger} ${newline}${message} ${exception} ${newline} --- |url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" /> <target xsi:type="Null" name="blackhole" /> <target xsi:type="Database" name="database"> <connectionString>${var:connectionString}</connectionString> <commandText> insert into syslog (levels,operatingtime,operatingaddress,userid,logger,requesturl,referrerurl,action,message,exception) values (@levels,@operatingtime,@operatingaddress,@userid,@logger,@requesturl,@referrerurl,@action,@message,@exception); </commandText> <parameter name="@levels" layout="${level}" /> <parameter name="@operatingTime" layout="${date}" /> <parameter name="@operatingaddress" layout="${aspnet-Request-IP}" /> <parameter name="@userid" layout="1" /> <parameter name="@logger" layout="${logger}" /> <parameter name="@requesturl" layout="${aspnet-request-url}" /> <parameter name="@referrerurl" layout="${aspnet-request}" /> <parameter name="@action" layout="${aspnet-mvc-action}" /> <parameter name="@message" layout="${message}" /> <parameter name="@exception" layout="${exception:tostring}" /> </target> </targets> <rules> <!--All logs, including from Microsoft--> <!--minlevel 改为Trace 跟踪全部 Error 只捕获异常--> <logger name="*" minlevel="Error" writeTo="allfile" /> <!--Skip Microsoft logs and so log only own logs--> <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" /> <logger name="*" minlevel="Trace" writeTo="ownFile-web" /> <logger name="*" minlevel="Trace" writeTo="database" /> </rules> </nlog>