我正在尝试将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();
}
}
到目前为止,数据库或文件中都没有任何日志。
您可以尝试..
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>