.Net log library Nlog writes to the database

Three steps are required: 1 create a suitable table in the data 2 configure nlog.config 3 call

1 Create the table

CREATE TABLE [dbo].[NLogInfo](
	[LogId] [int] IDENTITY(1,1) NOT NULL,
	[Date] [datetime] NOT NULL,
	[Origin] [nvarchar](100) NULL,
	[Level] [nvarchar](50) NULL,
	[Message] [nvarchar](max) NULL,
	[Detail] [nvarchar](max) NULL,
) ON [PRIMARY]

2 Configure 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"
      xsi: schemaLocation = "http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="Trace" internalLogFile="Nlog.log">

  <variable name="variable1"
            value="
            ${newline} date:	${date}
            ${newline}level:	${level}
            $ {newline} logger : $ {logger}
            ${newline}machinename:	${machinename}
            ${newline}message:	${message}
            ${newline}appdomain:	${appdomain}
            ${newline}assembly-version:	${assembly-version}
            ${newline}basedir:	${basedir}
            ${newline}callsite:	${callsite}
            ${newline}callsite-linenumber:	${callsite-linenumber}
            ${newline}counter:	${counter}
            ${newline}nlogdir:	${nlogdir}
            ${newline}processid:	${processid}
            ${newline}processname:	${processname}
            ${newline}specialfolder:	${specialfolder}
            ${newline}stacktrace: ${stacktrace}${newline}" />

  <targets>
    <!--  <target name="log_file"
            xsi:type="File"
            fileName="${basedir}/LogInformation/${level}_${shortdate}.txt"
            layout="${variable1}" />-->

    <target
      name="log_database"
      xsi:type="Database"
      connectionString="Data Source=.;Initial Catalog=Database Name;Persist Security Info=True;User ID=sa;Password=Password">
      <commandText>
        insert into NLogInfo([Date],[origin],[Level],[Message],[Detail]) values (getdate(), @origin, @logLevel, @message,@detail);
      </commandText>
      <!--Log source-->
      <parameter name="@origin" layout="${callsite}" />
      <!--Log level-->
      <parameter name="@logLevel" layout="${level}" />
      <!--Log message-->
      <parameter name="@message" layout="${message}" />
      <!--Reference variable1 information-->
      <parameter name="@detail" layout="${variable1}" />
    </target>
  </targets>

  <rules>
    <!--<logger name="*" writeTo="log_file" />-->
    <logger name="*" writeTo="log_database" />
  </rules>
</nlog>

 3 calls

  private Logger logger = LogManager.GetCurrentClassLogger();

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325592540&siteId=291194637