NLog - 新版<target xsi:type="Database" />設置方式
在ASP.NET MVC4網站開發美學出版後不久,NLog調整了<target>裡Database的設置方式,目前我在網路上看到所有NLog Database的設置,有99.9%都還是舊版範例,這裡提供新的組態設置方式給大家參考。
NLog - 舊版<target xsi:type="Database"設置方式
以下是舊版Database設置方式,也是你在網路上都可以查詢的到的組態:
<target xsi:type="Database" name="database"> <dbprovider>mssql</dbprovider> <!-- database connection parameters --> <!-- alternatively you could provide a single 'connectionstring' parameter --> <dbhost>.</dbhost> <dbdatabase>NLogDatabase</dbdatabase> <dbusername>nloguser</dbusername> <dbpassword>nlogpassword</dbpassword> <commandText> insert into NLog_Errro(time_stamp,level,logger,message) values(@time_stamp, @level, @logger, @message); </commandText> <parameter name="@time_stamp" layout="${date}" /> <parameter name="@level" layout="${level}" /> <parameter name="@logger" layout="${logger}" /> <parameter name="@message" layout="${message}" /> </target>
NLog - 新版<target xsi:type="Database"設置方式
新版的設置方式與其他File、Mail…等統一了,都是使用“屬性”方式來設置。
<targets> <target xsi:type="Database" name="String" dbUserName="Layout" dbProvider="String" useTransactions="Boolean" connectionStringName="String" connectionString="Layout" keepConnection="Boolean" dbDatabase="Layout" dbPassword="Layout" dbHost="Layout" installConnectionString="Layout" commandText="Layout"> <install-command commandType="Enum" connectionString="Layout" ignoreFailures="Boolean" text="Layout"/><!-- repeated --> <uninstall-command commandType="Enum" connectionString="Layout" ignoreFailures="Boolean" text="Layout"/><!-- repeated --> <parameter layout="Layout" name="String" precision="Byte" scale="Byte" size="Integer"/><!-- repeated --> </target> </targets>
語法說明請參考Database target文件。
以下是NLog新Database設置的範例:
<target xsi:type="Database" name="databaseLog" connectionString="{YourConnectionString}" commandText="insert into NLog_Error (time_stamp, level, logger, message) Values (@time_stamp, @level, @logger, @message)"> <parameter layout="${date}" name="@time_stamp" /> <parameter layout="${level}" name="@level" /> <parameter layout="${logger}" name="@logger" /> <parameter layout="${message}" name="@message" /> </target>
想請問一下Bruce大,我將connectionString改為windows azure的SQLDatabase connectionString,卻一直無法連線到(本機可以),不曉得Bruce大有試過嗎?(會不會跟Elmah一樣,放在雲端資料庫要另外設定)
回覆刪除你連線的 IP 是否有加入 Azure SQL Database 的信任清單?
刪除有的,我後來自己手動在windows azure的SQLDatabase新增資料表就可以了! 原因可能是我原本用SQL Server2012的匯出資料精靈到SQLDataBase時沒有設定到clustered index,所造成無法連線。
刪除