2016-06-15 69 views
1

我試圖用NLOG登錄到Oracle數據庫,已經創建了表,但是當我嘗試登錄的東西我得到異常:NLOG到數據庫(Oracle)的

ORA-00928:缺少SELECT關鍵字

我NLog.config文件是:

<?xml version="1.0" ?> 
<nlog autoReload="true" throwExceptions="true" internalLogFile="${basedir}/App_Data/nlog.txt" internalLogLevel="Debug" 
     internalLogToConsole="true"> 

    <targets> 
    <!--Useful for debugging--> 
    <target name="filelog" type="File" fileName="C:/App_Data/Site.log" 
    layout="${date}: ${message}" /> 

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

     <dbProvider>Oracle.DataAccess.Client</dbProvider> 

     <!-- database connection parameters --> 
     <!-- alternatively you could provide a single 'connectionstring' parameter --> 
     <connectionString>DATA SOURCE=database;PERSIST SECURITY INFO=True;USER ID=user;Password=password;Validate Connection=true</connectionString> 

     <commandText> 
     insert into RS_LOGTABLE ([log_user],[log_level],[log_date],[log_message]) values(@log_user,@log_level,@log_date,@log_message); 
     </commandText> 

     <parameter name="@log_user" layout="${message}"/> 
     <parameter name="@log_level" layout="${message}"/> 
     <parameter name="@log_date" layout="${date}"/> 
     <parameter name="@log_message" layout="${message}"/> 

    </target> 

    </targets> 

    <rules> 
    <logger name="*" minlevel="Trace" writeTo="filelog" /> 
    <logger name="*" minlevel="Trace" writeTo="databaselog" /> 
    </rules> 

</nlog> 

當我做到這一點出現異常:

logger = LogManager.GetCurrentClassLogger(); 
logger.Debug("Teste logger"); 

我已經嘗試做插入,而不括號,並得到另一個異常:

**ORA-00936: missing expression** 
+1

有關Oracle示例,請參見[本頁]上的**第二個**示例(http://nlog-project.org/documentation/v2.0.1/html/T_NLog_Targets_DatabaseTarget.htm),儘管使用了「System .Data.OracleClient' – stuartd

+0

現在我得到ORA-01036:非法變量名稱/編號... –

回答

2

我想這是遲到了你,但我會後爲他人解決誰擁有了同樣的問題。我剛剛解決了它。

我改變了冒號@的地址commandTextparameter標籤我完全刪除了它。我不使用括號,它開始工作。

這應該是正確的這樣:

<commandText> 
    insert into RS_LOGTABLE (log_user,log_level,log_date,log_message) values(:log_user,:log_level,:log_date,:log_message); 
</commandText> 

<parameter name="log_user" layout="${message}"/> 
<parameter name="log_level" layout="${message}"/> 
<parameter name="log_date" layout="${date}"/> 
<parameter name="log_message" layout="${message}"/> 

我dbProvider Oracle.DataAccess.Client進行了測試。

對其他人的警告: 我有一個變量名爲保留字,它引發另一個異常。更多的細節在這裏PHP ORA-01745: invalid host/bind variable name Warning

最後我很抱歉我的英語,我很久沒有使用它了。