我有一個ASP.NET應用程序,我們已經編寫了我們自己的日誌記錄模塊。我應該把我的日誌文件放在一個asp.net應用程序中?
我的問題是,哪裏是寫日誌文件的標準位置?即該網站將以匿名用戶身份(例如IIS7上的IUSR)運行,我需要一個我知道它有權寫入的地方。
乾杯,
我有一個ASP.NET應用程序,我們已經編寫了我們自己的日誌記錄模塊。我應該把我的日誌文件放在一個asp.net應用程序中?
我的問題是,哪裏是寫日誌文件的標準位置?即該網站將以匿名用戶身份(例如IIS7上的IUSR)運行,我需要一個我知道它有權寫入的地方。
乾杯,
項目根目錄上的App_Data文件夾。它不適用於網絡請求;所以其他人不能窺探它。
我會建議把日誌文件放到一個單獨的磁盤上,雖然應該給你一點性能上的提升,這樣你就不會試圖對網站同樣的磁盤進行讀寫操作。如果您不能將日誌文件放在單獨的磁盤上,那麼我會簡單地選擇一個您選擇的文件夾。
在任何情況下,您都必須將「網絡服務」帳戶的「修改」權限授予所需的文件夾。
另一方面,如果您有權訪問數據庫,請在那裏記錄信息。這將比訪問硬盤驅動器快得多,並且不會公開提供。你也可以很容易地從數據報告。
我無法修改文件夾的權限(特別是虛擬目錄主文件夾外),並且還沒有App_Data文件夾,所以我有點猶豫。
因此,目前我正在使用CommonApplicationData文件夾。
我我無法修改文件夾的權限(尤其是在虛擬目錄主文件夾之外),並且還沒有App_Data文件夾,所以我有點猶豫。
如果你有一個網站,你顯然有一個文件夾的地方。你不能添加(非面向Web的)子文件夾嗎?看起來這將是一個更適合放置日誌的地方,而不是將它們轉儲到全局共享文件夾中。
您也可以登錄到Windows事件日誌或數據庫中的表。人們多久看一次事件日誌?如果正在以正式方式進行審查,寫入表格會使報告返回起來容易得多,因爲顛倒順序並且僅顯示當前時間段的最後X個事件是微不足道的。 Windows事件日誌還可以通過PowerShell或LogParser查詢Windows事件日誌。
推app_data是最好的主意,只要記住,當發佈項目時,如果勾選了「在發佈之前刪除所有現有文件」選項,那麼文件夾中的當前數據將會消失。解決方法是跳過刪除app_data文件夾。
做日誌記錄的另一個選擇是使用一些現有的框架,如Log4net。
或Log Parser Lizard,這是LogParser的一個很好的補充,它支持幾乎所有文件系統的類似sql的語法。 – jhexp 2011-06-09 10:19:21