NLog - 新版<target xsi:type="Database" />設置方式

NLog - 新版<target xsi:type="Database" />設置方式

ASP.NET MVC4網站開發美學出版後不久,NLog調整了<target>裡Database的設置方式,目前我在網路上看到所有NLog Database的設置,有99.9%都還是舊版範例,這裡提供新的組態設置方式給大家參考。

NLog - 舊版<target xsi:type="Database"設置方式

以下是舊版Database設置方式,也是你在網路上都可以查詢的到的組態:

01<target xsi:type="Database" name="database">
02    <dbprovider>mssql</dbprovider>
03 
04    <!-- database connection parameters -->
05    <!-- alternatively you could provide a single 'connectionstring' parameter -->
06 
07    <dbhost>.</dbhost>
08    <dbdatabase>NLogDatabase</dbdatabase>
09    <dbusername>nloguser</dbusername>
10    <dbpassword>nlogpassword</dbpassword>
11 
12    <commandText>
13        insert into NLog_Errro(time_stamp,level,logger,message) values(@time_stamp, @level, @logger, @message);
14    </commandText>
15 
16    <parameter name="@time_stamp" layout="${date}" />
17    <parameter name="@level" layout="${level}" />
18    <parameter name="@logger" layout="${logger}" />
19    <parameter name="@message" layout="${message}" />
20</target

NLog - 新版<target xsi:type="Database"設置方式

新版的設置方式與其他File、Mail…等統一了,都是使用“屬性”方式來設置。

01<targets>
02  <target xsi:type="Database"
03          name="String"
04          dbUserName="Layout"
05          dbProvider="String"
06          useTransactions="Boolean"
07          connectionStringName="String"
08          connectionString="Layout"
09          keepConnection="Boolean"
10          dbDatabase="Layout"
11          dbPassword="Layout"
12          dbHost="Layout"
13          installConnectionString="Layout"
14          commandText="Layout">
15    <install-command commandType="Enum" connectionString="Layout" ignoreFailures="Boolean"
16                 text="Layout"/><!-- repeated -->
17    <uninstall-command commandType="Enum" connectionString="Layout" ignoreFailures="Boolean"
18                   text="Layout"/><!-- repeated -->
19    <parameter layout="Layout" name="String" precision="Byte"
20         scale="Byte" size="Integer"/><!-- repeated -->
21  </target>
22</targets

語法說明請參考Database target文件。

以下是NLog新Database設置的範例:

1<target xsi:type="Database"
2        name="databaseLog"
3        connectionString="{YourConnectionString}"
4        commandText="insert into NLog_Error (time_stamp, level, logger, message) Values (@time_stamp, @level, @logger, @message)">
5  <parameter layout="${date}" name="@time_stamp" />
6  <parameter layout="${level}" name="@level" />
7  <parameter layout="${logger}" name="@logger" />
8  <parameter layout="${message}" name="@message" />
9</target

我個人是覺得NLog組態統一改為屬性的方式很不錯。

3 則留言:

  1. 想請問一下Bruce大,我將connectionString改為windows azure的SQLDatabase connectionString,卻一直無法連線到(本機可以),不曉得Bruce大有試過嗎?(會不會跟Elmah一樣,放在雲端資料庫要另外設定)

    回覆刪除
    回覆
    1. 你連線的 IP 是否有加入 Azure SQL Database 的信任清單?

      刪除
    2. 有的,我後來自己手動在windows azure的SQLDatabase新增資料表就可以了! 原因可能是我原本用SQL Server2012的匯出資料精靈到SQLDataBase時沒有設定到clustered index,所造成無法連線。

      刪除

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。