簡體   English   中英

NLog 不會將日志存儲在數據庫中

[英]NLog won't store log in database

我需要將 NLog 添加到遺留的 asp.net 4.6.2 web 表單應用程序。 在全局類中,我正在為 SQL Server 數據庫中的數據庫目標配置記錄器

private static readonly Logger Logger = LogManager.GetCurrentClassLogger();

void Application_Start(object sender, EventArgs e)
{
    var dbTarget = new DatabaseTarget("DbTarget")
    {
        DBProvider = "mssql",
        CommandText = "INSERT INTO dbo.ApplicationLog (ApplicationId, Login, HostName, VisitedPage, PageURL, ReferrerURL, LogDate) values (@ApplicationId, @Login, @HostName, @VisitedPage, @PageURL, @ReferrerURL, @LogDate);", 
        ConnectionString = "Server=DBSERVER;Database=ApplicationLogging_Test;Trusted_Connection=True;"            
    };

    dbTarget.Parameters.Add(new DatabaseParameterInfo("@ApplicationId", "${applicationId}"));
    dbTarget.Parameters.Add(new DatabaseParameterInfo("@Login", "${login}"));
    dbTarget.Parameters.Add(new DatabaseParameterInfo("@HostName", "${hostName}"));
    dbTarget.Parameters.Add(new DatabaseParameterInfo("@VisitedPage", "${visitedPage}"));
    dbTarget.Parameters.Add(new DatabaseParameterInfo("@PageURL", "${pageURL}"));
    dbTarget.Parameters.Add(new DatabaseParameterInfo("@ReferrerURL", "${referrerURL}"));
    dbTarget.Parameters.Add(new DatabaseParameterInfo("@LogDate", "${event-properties:LogDate}"));

    NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(dbTarget, LogLevel.Info);
}

void Session_Start(object sender, EventArgs e)
{
    // Bunch of stuff omitted for brevity, all vars in object below are populating. 
  
    Logger.Info(message, new { ApplicationId = 1049, Login, HostName, VisitedPage, PageURL, ReferrerURL });
}

問題是我任意添加布局渲染器,因為我將它們誤解為將映射到我的 SQL 查詢的變量。 可以有自定義變量,但需要將它們添加為事件屬性。 布局渲染器受到控制,它們的列表可在此處獲得:

https://nlog-project.org/config/?tab=layout-renderers

固定代碼是:

dbTarget.Parameters.Add(new DatabaseParameterInfo("@ApplicationId", "${event-properties:applicationId}"));

我必須這樣添加 applicationId:

LogEventInfo theEvent = new LogEventInfo(LogLevel.Info, null, "Session_Start");
theEvent.Properties["applicationId"] = 1049;
Logger.Log(theEvent);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM