Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不要将日志写入数据库NLog+;ASP.NET5+;SQL Server_C#_Asp.net_Nlog - Fatal编程技术网

C# 不要将日志写入数据库NLog+;ASP.NET5+;SQL Server

C# 不要将日志写入数据库NLog+;ASP.NET5+;SQL Server,c#,asp.net,nlog,C#,Asp.net,Nlog,我的应用程序是基于ASP.NET5构建的 我曾经在.NETCore上做过一个项目,一切都很好,日志没有问题。但是在ASP.NET5中,我不知道如何做到这一点 我正在尝试使用以下配置将日志写入数据库: 这是我的配置文件: <?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.

我的应用程序是基于ASP.NET5构建的 我曾经在.NETCore上做过一个项目,一切都很好,日志没有问题。但是在ASP.NET5中,我不知道如何做到这一点 我正在尝试使用以下配置将日志写入数据库:

这是我的配置文件:

<?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="Off" internalLogFile="c:\temp\nlog-internal.log">

  <!-- optional, add some variables
  https://github.com/nlog/NLog/wiki/Configuration-file#variables
  -->
  <variable name="myvar" value="myvalue"/>

  <!--
  See https://github.com/nlog/nlog/wiki/Configuration-file
  for information on customizing logging rules and outputs.
   -->
  <targets>
  <target name="database" xsi:type="Database">

    <connectionStringName>"Server=localhost\\SQLEXPRESS;Database=LocalDB;User ID=sa;Password=1234;"</connectionStringName>


    <commandText>
      insert into dbo.LogExcelWorker (
      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\: set AppName in appSettings}" />
    <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>

    <logger name="*" minlevel="Debug" writeTo="database" /> 
  </rules>
</nlog>

但是数据库中没有记录

您需要指向正确的目标名称

<logger name="*" minlevel="Debug" writeTo="database" />

WriteTog属性错误

<logger name="*" minlevel="Debug" writeTo="f" /> 

照你说的做了,但没有结果。也许我做错了什么?@VasyaMilovidov:在你的nlog配置中添加以下内容。internalLogLevel=“trace”internalLogFile=“log/internal nlog.txt”throwExceptions=“true”throwConfigExceptions=“true”所以您应该可以看到log/internal-nlog.txt中的错误您的建议很有帮助。在数据库之前,我通过了。但是现在我遇到了这样一个错误,将nvarchar数据类型转换为datetime数据类型会导致值超出范围。此指令的执行已中断。我想问题出在参数:2018-03-19 16:40:15.2021跟踪参数:“@logged”=“2018/03/19 16:40:14.791”(字符串)我这样解决了问题:照你说的做了,但没有结果。也许我做错了什么?
connectionStringName
看起来不正确。它应该是
connectionString
,其值周围没有引号。
<logger name="*" minlevel="Debug" writeTo="f" /> 
<logger name="*" minlevel="Debug" writeTo="database" /> 
internalLogLevel="trace" 
internalLogFile="log/internal-nlog.txt"
throwExceptions="true"  
throwConfigExceptions="true"