使用 NLog 涵蓋所有 IIS Logs 可以記錄的事項
2022-02-15
說明如何使用 NLog 涵蓋所有 IIS Logs 可以記錄的資訊欄位,包含 cs(Referer)、sc-status、cs-uri-stem,並處理 IIS Logs 無法蒐錄的資訊欄位,例如 Post Data 及 Form Collections 等。
說明
IIS Logs | Meaning | NLog Renderers |
---|---|---|
date | 日期 UTC | ${date} |
time | 時間 UTC | ${time} |
s-ip | 伺服器 IP | ${local-ip} |
cs-method | HTTP Method (GET, POST) | {aspnet-request-method} |
cs-uri-stem | URI 相對路徑 | {aspnet-request-url} |
cs-uri-query | URI 參數 | {aspnet-request-url} |
s-port | 伺服器 Port | 😧 |
cs-username | 使用者名稱 | ${aspnet-user-identity} or ${identity} |
c-ip | 使用者 IP | ${aspnet-request-ip} |
cs(User-Agent) | 瀏覽器、作業系統資訊 | ${aspnet-request-useragent} |
cs(Referer) | 來源位址 | ${aspnet-request-referrer} |
sc-status | Http Status | ${aspnet-response-statuscode} |
sc-substatus | 😧 | |
sc-win32-status | 顯示各種錯誤狀態的代碼,0 表示為正常 | 😧 |
time-taken | Byte 傳送時間,單位為 ms,1000 為 1 秒 | 😧 |
sc-win32-status 以及 time-taken 是 IIS Logs 的強項,NLog 的沒有相對應的 Renderers,而雖然沒有 Renderers 但 NLog 仍是可以藉由 .NET Framework 並使用 Properties 的方式來創造無法與 IIS Logs 對應的資料欄位,例如 s-port、sc-substatus。
相對地 NLog 也有許多勝過 IIS Logs 可以蒐集的資料欄位:
Renderers | Usage |
---|---|
${exception} |
.NET 所觸發的 Exception 資訊 |
${environment} |
取得系統的環境變數 |
${windows-identity} |
取得 w3wp Thread 負責執行的身分 |
${aspnet-request-form} |
Request form 當中的內容,即 Post payload 中的 Data |
${aspnet-request-headers} |
ASP.NET Header 的 key / value 資料 |