NLog 未写入数据库表

2024-01-08

这是我的 NLog 配置文件。

<?xml version="1.0" ?>
<nlog autoReload="true" throwExceptions="true"  internalLogLevel="Debug" internalLogToConsole="true"
     internalLogFile="c:\\temp\\nlog.txt" 
      >

  <targets>
    <!--Useful for debugging-->
    <target name="consolelog" type="ColoredConsole"
    layout="${date:format=HH\:mm\:ss}|${level}|${stacktrace}|${message}" />

    <target name="filelog" type="File" fileName="c:\\temp\\nlog1.txt"
    layout="${date}: ${message}" />

    <target name="eventlog" type="EventLog" source="My App" log="Application"
    layout="${date}: ${message} ${stacktrace}" />

    <target name="databaselog" type="Database">

      <dbProvider>sqlserver</dbProvider>

      <!-- database connection parameters -->
      <!-- alternatively you could provide a single 'connectionstring' parameter -->
      <connectionString>Data Source=.\SQLEXPRESS;Initial Catalog=SnSolutions;User Id=sa;Password=test@1234@;</connectionString>
      <!--<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MyTest;User Id=mytest;Password=mytest123;" providerName="System.Data.SqlClient" />-->

      <commandText>
        insert into NLog_Error ([time_stamp],[level],[host],[type],1,[logger],[message],[stacktrace],[allxml]) values(@time_stamp,@level,@host,@type,@source,@logger,@message,@stacktrace,@allxml);
      </commandText>

      <parameter name="@time_stamp" layout="${date}" />
      <parameter name="@level" layout="${level}" />
      <parameter name="@host" layout="${machinename}" />
      <parameter name="@type" layout="${exception:format=type}" />
      <parameter name="@source" layout="${callsite:className=true:fileName=false:includeSourcePath=false:methodName=false}" />
      <parameter name="@logger" layout="${logger}" />
      <parameter name="@message" layout="${message}" />
      <parameter name="@stacktrace" layout="${exception:stacktrace}" />
      <parameter name="@allxml" layout="${web_variables}" />

    </target>

  </targets>

  <rules>
    <!--
 <logger name="*" minlevel="Fatal" writeTo="eventlog" />
 -->
    <logger name="*" minlevel="Info" writeTo="filelog" />
    <logger name="*" minlevel="Info" writeTo="databaselog" />
  </rules>

</nlog>

这是我的 NLogLogger 类

public class NLogLogger 
{
    private readonly Logger _logger;

    public NLogLogger(Logger logger)
    {

        _logger = logger;
    }

    public NLogLogger()
    {
        StackFrame frame = new StackFrame(1, false);

        _logger = LogManager.GetLogger(frame.GetMethod().DeclaringType.FullName);

    }

    public void Trace(string message)
    {
        _logger.Trace(message);
    }

    public void Debug(string message)
    {
        _logger.Debug(message);
    }

    public void Info(string message)
    {
        _logger.Info(message);
    }

    public void Warn(string message)
    {
        _logger.Warn(message);
    }

    public void Error(string message)
    {
        _logger.Error(message);
    }

    public void Fatal(string message)
    {
        _logger.Fatal(message);
    }
}

我正在尝试按以下方式使用它。

NLogLogger logger = new NLogLogger();

logger.Info("We're on the Index page for Activities");

但无法看到数据库中的任何记录,也无法看到文件系统中的任何错误。

请让我知道我缺少哪一部分。

提前致谢。


插入命令中有错误 - 1 不是有效的列名。

insert into NLog_Error (...[type],1,[logger]..) 

这是一个example http://www.geoffhudik.com/tech/2013/5/20/aspnet-nlog-sql-server-logging-and-error-handling-part-1.html关于记录到数据库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NLog 未写入数据库表 的相关文章

随机推荐