NLOG阻止ASP.NET Core中的更新数据库

发布于 2025-01-31 20:22:14 字数 2786 浏览 3 评论 0原文

我在ASP.NET Core Web API项目中使用了NLOG。 在使用 nlog
时 这是我的应用程序中我的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"
      throwExceptions="true"
      internalLogLevel="Trace"
      internalLogFile="C:\Nlog\logs\internalLog.txt">

    <targets>
        <target xsi:type="Database"
            name="dbTarget"
            connectionString="${configsetting:item=ConnectionStrings.DefaultConnection}"
            commandText="INSERT INTO [app].[TblApplicationLog](Logged,Message,Level,Exception,Logger,Url,UserName,ServerName,Ip,Controller,Action,Host,Application,Callsite,UserAuthenticated, Useragent)
                VALUES (@datetime,@msg,@level,@exception,@logger,@url,@username,@servername,@ip,@controller,@action,@host,@application,@callsite,@userAuthenticated,@useragent)">
            <parameter name="@application" layout="AspNetCoreNlog" />
            <parameter name="@datetime" layout="${date}" />
            <parameter name="@msg" layout="${message}" />
            <parameter name="@level" layout="${level}" />
            <parameter name="@exception" layout="${exception:innerFormat=Message,StackTrace}" />
            <!--<parameter name="@trace" layout="${stacktrace}" />-->
            <parameter name="@callsite" layout="${callsite}" />
            <parameter name="@logger" layout="${logger}" />
            <parameter name="@url" layout="${aspnet-request-url}" />
            <parameter name="@username" layout="${aspnet-user-identity}" />
            <parameter name="@servername" layout="${machinename}" />
            <parameter name="@ip" layout="${aspnet-request-ip}" />
            <parameter name="@controller" layout="${aspnet-mvc-controller}" />
            <parameter name="@action" layout="${aspnet-mvc-action}" />
            <parameter name="@host" layout="${aspnet-request-host}" />
            <parameter name="@useragent" layout="${aspnet-request-useragent}" />
            <parameter name="@userAuthenticated" layout="${aspnet-user-isauthenticated}" />
        </target>
    </targets>

    <rules>
        <logger name="*" minlevel="Trace" writeTo="dbTarget" />
    </rules>
</nlog>

记录中的所有内容都可以正常工作,但是如果我添加新的迁移并想做更新database ,我会在Nuget Package Manager Console中遇到以下错误:

写信给记录器时发生了错误。 (超时到期 在完成操作或 服务器没有响应。)

注意:当我从解决方案中排除nlog.config文件时,update-database像往常一样工作正常,但是在我的解决方案中包含nlog.config文件时,update-database将无法正常工作

I'm using NLog in my ASP.NET Core Web API project.
I have and issue in Update-Database while using NLog

This is my NLog.Config file in my application :

<?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"
      throwExceptions="true"
      internalLogLevel="Trace"
      internalLogFile="C:\Nlog\logs\internalLog.txt">

    <targets>
        <target xsi:type="Database"
            name="dbTarget"
            connectionString="${configsetting:item=ConnectionStrings.DefaultConnection}"
            commandText="INSERT INTO [app].[TblApplicationLog](Logged,Message,Level,Exception,Logger,Url,UserName,ServerName,Ip,Controller,Action,Host,Application,Callsite,UserAuthenticated, Useragent)
                VALUES (@datetime,@msg,@level,@exception,@logger,@url,@username,@servername,@ip,@controller,@action,@host,@application,@callsite,@userAuthenticated,@useragent)">
            <parameter name="@application" layout="AspNetCoreNlog" />
            <parameter name="@datetime" layout="${date}" />
            <parameter name="@msg" layout="${message}" />
            <parameter name="@level" layout="${level}" />
            <parameter name="@exception" layout="${exception:innerFormat=Message,StackTrace}" />
            <!--<parameter name="@trace" layout="${stacktrace}" />-->
            <parameter name="@callsite" layout="${callsite}" />
            <parameter name="@logger" layout="${logger}" />
            <parameter name="@url" layout="${aspnet-request-url}" />
            <parameter name="@username" layout="${aspnet-user-identity}" />
            <parameter name="@servername" layout="${machinename}" />
            <parameter name="@ip" layout="${aspnet-request-ip}" />
            <parameter name="@controller" layout="${aspnet-mvc-controller}" />
            <parameter name="@action" layout="${aspnet-mvc-action}" />
            <parameter name="@host" layout="${aspnet-request-host}" />
            <parameter name="@useragent" layout="${aspnet-request-useragent}" />
            <parameter name="@userAuthenticated" layout="${aspnet-user-isauthenticated}" />
        </target>
    </targets>

    <rules>
        <logger name="*" minlevel="Trace" writeTo="dbTarget" />
    </rules>
</nlog>

Everything in logging works fine but if I add a new migration and wanna do update-database, I get following error in NuGet Package Manager Console:

An error occurred while writing to logger(s). (Timeout expired. The
timeout period elapsed prior to completion of the operation or the
server is not responding.)

Note: When I exclude the Nlog.config file from my solution, Update-Database works fine like always, but with including Nlog.config file in my solution, Update-database won't work anymore

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我的错误是来自我的nlog.conif文件中的这条代码
在行编号5 = throwException =“ true”
删除此行后,更新数据库

My mistake was from this line of code in my NLog.Conif file
in line number 5 = throwException="true"
After I removed this line, update database done

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文