2011-03-04 56 views
2

我使用NLog進行日誌記錄,現在我正在嘗試將它用於我的SharePoint解決方案。
如何指導WSPBuilder在WSP中包含NLog.config並將它放在與解決方案dll相同的文件夾中?如何在WSP中包含配置文件?

編輯:

好了,另一種選擇是把它作爲Web.nlog在SharePoint 目錄。
我需要一個單獨的功能嗎?我應該在elements.xml寫什麼?

回答

3

我不認爲這不能做 - 我出於安全原因而假設。

DLL只能部署到GAC(僅限簽署的程序集)或Web應用程序的bin目錄(通過解決方案清單部署以及任何所需的CAS策略)。

如果您想在bin目錄中的程序集旁邊添加額外的文件,則需要手動複製它們。

+0

謝謝你的迴應。請,你可以給你編輯意見嗎? – 2011-03-04 20:38:17

+0

通過features.xml中的預置文件只能放入12個配置單元('Program files \ common files \ microsoft shared \ web server extensions extensions \ 12 \ template' directory)。它們可以放置在佈局目錄的任何子文件夾(它們隨後可供場中的每個站點使用)或放入激活功能的站點中的任何文檔庫中。 – 2011-03-04 20:41:48

+1

簡而言之,您可能只需簡單地在解決方案中添加一個手動部署步驟即可將該文件複製到某個可用的位置。不要因此而灰心 - 我不得不時刻做手動操作,是的,它覺得自己很髒,但有時候這是唯一的方法。 – 2011-03-04 20:43:01

3

NLog.config是否需要單獨的文件,或者可以將設置集成到web.config文件中?如果可以將設置集成到web.config文件中,則可以使用SPWebConfigModifications(僅適用於Google)添加功能接收器,並在FeatureActivated或FeatureInstalling事件期間將必要設置寫入web.config。您還應該確保刪除FeatureDeactivating或FeatureUninstalled事件中的設置。

+0

是的,NLog的配置也可以放在'web.config'中。不過,我將其他答案標記爲正確,因爲從長遠來看,手動操作看起來更容易維護。謝謝你的努力! – 2011-03-04 23:48:47

+0

如果您的服務器場中有多個服務器,則不應該這樣做,在這種情況下,您必須手動使web.config文件在所有服務器上保持同步。另外,如果您向服務器場添加新服務器,則必須記住手動將您的設置添加到其web.config中,而如果您是通過SPWebConfigModifications完成的,則該服務將自動完成。實際上,這樣做是最糟糕的方式。 – 2011-03-05 07:55:04

+0

我沒有更改'web.config',而是使用配置將特殊的'web.nlog'文件放入同一個目錄,因爲它可以很好地與NLog一起工作。手動改變'web.config'是個不錯的主意,但是放置一個額外的文件很簡單。 – 2011-03-09 02:02:36

0

你也應該看看這裏: http://msdn.microsoft.com/en-us/library/ee413935.aspx

我還要問這些問題:

  • 是配置同樣爲所有的農場嗎?只有一個Web應用程序?
  • 你能編程指定NLog配置嗎?

根據你的答案,我會提出一個或多個解決方案。 與web.config中的缺點是

  • 配置部署所有SharePoint服務器上(該功能照顧那個,但你必須記住這一點在不一致的行爲的情況下)
  • 如果你想修改設置沒有簡單的方法
  • 每次修改設置時,它都會回收應用程序池。
+0

只有一個服務器只有一個Web應用程序,並且沒有擴展的計劃,所以它非常簡單。不幸的是,動態加載XML在NLog中有些不好記錄。我不會將這些設置存儲在web.config/web.nlog中 - 它們只包括對SharePoint CONFIG目錄中的一個文件的硬編碼引用,它可以在運行時修改並自動重新加載。我只需要給NLog最初的地方看看。 – 2011-03-05 00:19:33

+0

我明白了。將配置存儲在12 Hive中很簡單,但不容易更新(無需更新WSP或手動更新)。但有了一個服務器/應用程序,它應該是好的:) – 2011-03-05 00:37:25

相關問題