我使用NLOG 1.0,並具有以下配置文件:NLOG數據庫目標沒有找到表
<?xml version="1.0"?>
<nlog autoReload="true" throwExceptions="true">
<targets>
<!--<target name="console" xsi:type="ColoredConsole"
layout="${date:format=HH\:mm\:ss}|${level}|${stacktrace}|${message}" />
<target name="file" xsi:type="File" fileName="${basedir}/Logs/Site.log"
layout="${date}: ${message}" />
<target name="eventlog" xsi:type="EventLog" source="My App" log="Application"
layout="${date}: ${message} ${stacktrace}" />-->
<target name="database" type="Database" connectionStringName="xxxxxxx">
<dbprovider>mssql</dbprovider>
<commandText>
INSERT INTO Logs (Message, Level, CreatedOn) VALUES (@message, @level, @createdOn);
</commandText>
<parameter name="@message" layout="${message}" />
<parameter name="@level" layout="${level}" />
<parameter name="@createdOn" layout="${date}" />
</target>
</targets>
<rules>
<logger name="*" minlevel="Debug" appendTo="database" />
<!--<logger name="*" minlevel="Info" writeTo="file" />
<logger name="*" minlevel="Fatal" writeTo="eventlog" />-->
</rules>
這幾乎是從與n日誌提供的CodePlex上例的複製粘貼。在我的global.ascx中,我有它的日誌「Application Started!」只是爲了測試記錄工作然而,這就是問題的開始(順便文件目標效果很好,它只是在DB目標):
System.Data.SqlClient.SqlException: Invalid object name 'Logs'.
似乎相當直截了當給我,必須是一個錯字。我檢查SQL事件探查器,並得到如下:
exec sp_executesql N'
INSERT INTO Logs (Message, Level, CreatedOn) VALUES (@message, @level, @createdOn);
',N'@message nvarchar(20),@level nvarchar(4),@createdOn nvarchar(19)',@message=N'Application Started!',@level=N'Info',@createdOn=N'06/25/2010 23:59:30'
我的表中創建代碼如下:
CREATE TABLE Logs (
Id INT IDENTITY(1, 1) NOT NULL,
[Level] VARCHAR(5) NOT NULL,
[Message] VARCHAR(4095) NOT NULL,
CreatedOn DATETIME NOT NULL,
CONSTRAINT PK_Logs PRIMARY KEY (Id)
)
任何想法,我肯定很簡單的東西?
我設法得到這個工作,並有一種感覺我的連接字符串是問題。當在CommandText更改爲:
USE xxxx INSERT INTO dbo.Logs (Message, Level, CreatedOn) VALUES (@message, @level, @createdOn);
所有的作品,我會嘗試一些連接字符串,如果你知道任何與工作NLOG讓我知道請!
,它的在dbo架構中,我也嘗試將其添加到腳本中,但沒有運氣「無效的對象名稱'dbo.Logs'」。這是沒有任何意義,因爲SQL配置文件腳本執行。這是NLog中的一個錯誤嗎?還是其他人使用數據庫日誌記錄好嗎? – 2010-06-26 02:25:44