.Net日志库Nlog写入到数据库

需三个步骤:1在数据创建合适的表    2配置nlog.config    3调用

1创建表

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配置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=数据库名;Persist Security Info=True;User ID=sa;Password=密码">
      <commandText>
        insert into NLogInfo([Date],[origin],[Level],[Message],[Detail]) values (getdate(), @origin, @logLevel, @message,@detail);
      </commandText>
      <!--日志来源-->
      <parameter name="@origin" layout="${callsite}" />
      <!--日志等级-->
      <parameter name="@logLevel" layout="${level}" />
      <!--日志消息-->
      <parameter name="@message" layout="${message}" />
      <!--引用variable1信息-->
      <parameter name="@detail" layout="${variable1}" />
    </target>
  </targets>

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

 3调用

  private Logger logger = LogManager.GetCurrentClassLogger();

猜你喜欢

转载自blog.csdn.net/u013667895/article/details/79067828
今日推荐