Nlog数据库日志记录不插入行(Nlog Database logging doesn't insert row)

编程入门 行业动态 更新时间:2024-10-21 13:25:30
Nlog数据库日志记录不插入行(Nlog Database logging doesn't insert row)

我正在学习NLog,并已转向数据库日志记录。 我在网上尝试过多个例子,并且不能让它们中的任何一个实际插入记录。 由于NLog吞噬了它获得的任何异常,我无法理解为什么日志尝试失败。 我的记录器和配置没有问题。 它执行该行就好像它工作但表保持为空。 我在Nlog的例子上迈出了一步,但它也不起作用! :( Nlog数据库示例

更新:我最终删除并重新启动配置,它现在工作。 不知道是什么修复了新配置文件的问题,但我也意识到asp渲染导致错误,所以我删除它们。

<target name="db"
    xsi:type="Database"
    dbProvider="System.Data.SqlClient"
    connectionString="Data Source=Server;Initial Catalog=Database;Persist Security Info=True;Integrated Security=SSPI;"
    commandType="StoredProcedure"
    commandText="[dbo].[NLog_AddEntry_p]">
    <parameter name="@machineName"    layout="${machinename}" />
    <parameter name="@siteName"       layout="${iis-site-name}" />
    <parameter name="@logged"         layout="${date}" />
    <parameter name="@level"          layout="${level}" />
    <parameter name="@username"       layout="${aspnet-user-identity}" />
    <parameter name="@message"        layout="${message}" />
    <parameter name="@logger"         layout="${logger}" />
    <parameter name="@properties"     layout="${all-event-properties:separator=|}" />
    <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="@callSite"       layout="${callsite}" />
    <parameter name="@exception"      layout="${exception:tostring}" />
</target>
 
try
{
    int zero = 0;
    int result = 100 / zero;
}
catch (Exception ex)
{
    Logger filelogger = LogManager.GetLogger("filelogger");
    Logger dblogger = LogManager.GetLogger("dblogger");
    //filelogger.Error(ex, "Whoops");
    dblogger.Error(ex, "Whoops");
}

I am learning NLog and have moved on to Database logging. I have tried multiple examples on the web and can't get any of them to actually insert a record. I can't see why the log attempt failed due to NLog gobbling up any exceptions it gets. My logger and the config is found without issue. It executes the line as if it worked but the table remains empty. I did step for step on Nlog's example but it doesn't work either! :( Nlog Database Example

UPDATE: I ended up deleting and starting over on the config and it now works. Not sure what fixed the issue from the new config file but i also realized the asp renders were causing errors so i removed them.

<target name="db"
    xsi:type="Database"
    dbProvider="System.Data.SqlClient"
    connectionString="Data Source=Server;Initial Catalog=Database;Persist Security Info=True;Integrated Security=SSPI;"
    commandType="StoredProcedure"
    commandText="[dbo].[NLog_AddEntry_p]">
    <parameter name="@machineName"    layout="${machinename}" />
    <parameter name="@siteName"       layout="${iis-site-name}" />
    <parameter name="@logged"         layout="${date}" />
    <parameter name="@level"          layout="${level}" />
    <parameter name="@username"       layout="${aspnet-user-identity}" />
    <parameter name="@message"        layout="${message}" />
    <parameter name="@logger"         layout="${logger}" />
    <parameter name="@properties"     layout="${all-event-properties:separator=|}" />
    <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="@callSite"       layout="${callsite}" />
    <parameter name="@exception"      layout="${exception:tostring}" />
</target>
 
try
{
    int zero = 0;
    int result = 100 / zero;
}
catch (Exception ex)
{
    Logger filelogger = LogManager.GetLogger("filelogger");
    Logger dblogger = LogManager.GetLogger("dblogger");
    //filelogger.Error(ex, "Whoops");
    dblogger.Error(ex, "Whoops");
}

                

最满意答案

问题在于asp布局渲染并缺少它们的包。 我还将internalLogging标志设置为无效值。 这些修正解决了这个问题。

The issue was with asp layout renders and missing a package for them. Also i had set the internalLogging flag to an invalid value. These corrections fixed the problem.

更多推荐

<parameter,layout,电脑培训,计算机培训,IT培训"/> <meta name="descript

本文发布于:2023-08-02 04:21:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1368395.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据库   日志   Nlog   Database   row

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!