【问题标题】:How to Use NLog and Log error to database in ASP.Net Core如何在 ASP.Net Core 中使用 NLog 和记录错误到数据库
【发布时间】:2016-07-07 08:32:02
【问题描述】:

我正在使用 NLog.web 和 Nlog.config 。能够将错误记录到文件中。尝试登录数据库时。 获取目标数据库找不到。

如果有人使用带有 asp.net core rc1 的 Nlog 并将错误记录到数据库中,请提供帮助

我的配置看起来像

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" internalLogFile="Nlog.log">
  <targets>
    <target name="file" xsi:type="File" layout="${longdate}|${level}|${callsite}|${logger}|${threadid}|${windows-identity:domain=false}--${message} ${exception:format=message,stacktrace:separator=*" fileName="c:\psnet\myapplication.log"/>
    <target name="database" type="Database">
      <connectionString>
        Data Source=databaseservername;Initial Catalog=databasename;User Id=username;Password=password;
      </connectionString>
      <commandText>
        insert into system_logging(log_date,log_level,log_logger,log_message,log_machine_name, log_user_name, log_call_site, log_thread, log_exception, log_stacktrace) values(@time_stamp, @level, @logger, @message,@machinename, @user_name, @call_site, @threadid, @log_exception, @stacktrace);
      </commandText>
      <parameter name="@time_stamp" layout="${longdate}"/>
      <parameter name="@level" layout="${level}"/>
      <parameter name="@logger" layout="${logger}"/>
      <parameter name="@message" layout="${message}"/>
      <parameter name="@machinename" layout="${machinename}"/>
      <parameter name="@user_name" layout="${windows-identity:domain=true}"/>
      <parameter name="@call_site" layout="${callsite:filename=true}"/>
      <parameter name="@threadid" layout="${threadid}"/>
      <parameter name="@log_exception" layout="${exception}"/>
      <parameter name="@stacktrace" layout="${stacktrace}"/>
    </target>
  </targets>
  <rules>
    <logger name="*" minlevel="Info" writeTo="file"/>
    <logger name="*" minlevel="Info" appendTo="database"/>
  </rules>
</nlog>

我能够写入文件..在 Nog 内部文件中显示错误目标数据库未知 即使尝试写入显示相同错误的事件日志 目标事件日志未知

请帮我解决这个问题

【问题讨论】:

标签: nlog error-logging custom-error-handling


【解决方案1】:

你需要 NLog.Extensions.Logging

1。在 project.json 中添加依赖

"dependencies": {
    "NLog.Extensions.Logging": "1.0.0-*"
 }

2。在项目文件的根目录下创建 nlog.config,参见 NLog.config example

3。在 startup.cs 添加 Configure

  using NLog.Extensions.Logging;

  public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
  {
      //add NLog to ASP.NET Core
      loggerFactory.AddNLog();


      //needed for non-NETSTANDARD platforms: configure nlog.config in your project root
      env.ConfigureNLog("nlog.config");
      ...

4。在 project.json 中包含用于发布的 NLog.config:

   "publishOptions": {
        "include": [
            "wwwroot",
            "Views",
            "appsettings.json",
            "web.config",
            "nlog.config"
        ]
    },

5。不工作?

启用并检查internal log

【讨论】:

  • 我想在.Net Core 库中使用NLog,我按照你说的执行这些步骤,但是在库中我们没有`startup.cs , so i try Configuration API` in :https://github.com/NLog/NLog/wiki/Configuration-API env.ConfigureNLog("nlog.config"); 但它不起作用,你知道吗?谢谢
  • 这是一个控制台应用程序?
猜你喜欢
  • 2017-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多