N登录到数据库/文件WPF

问题描述 投票:0回答:1

我正在尝试将WPF应用程序的事件记录到数据库和文件中。但是我想我缺少了一些东西。现在我的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" >
  <variable name="logDirectory" value="E:\Logs\"/>

  <targets>

    <target xsi:type="File"
            name="f"
            fileName="${logDirectory}/Teste.log"
            layout="Teste ${message}" />

    <target name="LogDatabase" xsi:type="Database" keepConnection="false" useTransactions="true"
            dbProvider="Oracle.DataAccess.Client"
            connectionStringName="NLog"
            commandText="insert into RS_LOGTABLE(LOG_USER, LOG_LEVEL, LOG_DATE, LOG_MESSAGE, LOG_STACKTRACE) values(@LOG_USER, @LOG_LEVEL, sysdate, @LOG_MESSAGE, @LOG_STACKTRACE)">
      <parameter name="@LOG_LEVEL" layout="${level}" />
      <parameter name="@LOG_USER" layout="${user}" />
      <parameter name="@LOG_MESSAGE" layout="${message}" />
      <parameter name="@LOG_STACKTRACE" layout="${stacktrace}" />
    </target>

  </targets>
  <rules>
    <logger name="*" minlevel="Trace" writeTo="f" />
    <logger name="*" minlevel="Trace" writeTo="LogDatabase" />
  </rules>
</nlog>

然后,我在主体中进行一个简单的测试:

public partial class Main : Window
    {
        private static Logger logger = LogManager.GetCurrentClassLogger();
        public Main()
        {
                logger.Debug("Test logger");
                InitializeComponent();

        }
    }

到目前为止,数据库或文件中都没有任何日志。

c# wpf nlog
1个回答
0
投票

您可以尝试..

P.S。检查connectionString

 <?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" >
      <variable name="logDirectory" value="E:\Logs\"/>

      <targets>

        <target xsi:type="File"
                name="f"
                fileName="${logDirectory}/Teste.log"
                layout="Teste ${message}" />

        <target name="LogDatabase" xsi:type="Database" keepConnection="false" useTransactions="true"
                dbProvider="Oracle.ManagedDataAccess.Client.OracleConnection, Oracle.ManagedDataAccess"
                connectionString="HERE YOUR ConnectionString"
                commandText="insert into RS_LOGTABLE(LOG_USER, LOG_LEVEL, LOG_DATE, LOG_MESSAGE, LOG_STACKTRACE) values(:LOG_USER, :LOG_LEVEL, sysdate, :LOG_MESSAGE, :LOG_STACKTRACE)">
          <parameter name=":LOG_LEVEL" layout="${level}" />
          <parameter name=":LOG_USER" layout="${user}" />
          <parameter name=":LOG_MESSAGE" layout="${message}" />
          <parameter name=":LOG_STACKTRACE" layout="${stacktrace}" />
        </target>

      </targets>
      <rules>
        <logger name="*" minlevel="Trace" writeTo="f" />
        <logger name="*" minlevel="Trace" writeTo="LogDatabase" />
      </rules>
    </nlog>
© www.soinside.com 2019 - 2024. All rights reserved.