分享方式:


MSAL.js 中的記錄

Microsoft 驗證程式庫 (MSAL) 應用程式能產生記錄訊息,可用來協助診斷問題。 應用程式可透過幾行程式碼來設定記錄,並針對詳細資料層級和是否要記錄個人和組織資料具有自訂控制。 建議您建立 MSAL 記錄實作,並為使用者提供在發生驗證問題時提交記錄的方式。

記錄層級

MSAL 提供數種層級的記錄詳細資料:

  • LogAlways:此記錄層級上不會進行層級篩選。 將會記錄所有層級的記錄訊息。
  • 重大:描述無法復原的應用程式或系統當機的記錄,或需要立即注意的災難性失敗。
  • 錯誤:指出已發生問題並產生錯誤。 用來進行偵錯及識別問題。
  • 警告:不一定有錯誤或失敗發生,但應該進行診斷並找出問題。
  • 資訊:MSAL 會記錄用於資訊用途的事件,不一定用於偵錯。
  • 詳細資訊 (預設值):MSAL 會記錄程式庫行為的完整詳細資料。

注意

並非所有記錄層級都適用於所有 MSAL SDK

個人和組織資料

根據預設,MSAL 記錄器不會擷取任何具高度敏感性的個人或組織資料。 程式庫可讓您在需要時選擇啟用記錄個人和組織資料的功能。

下列各節提供更多有關您應用程式 MSAL 錯誤記錄的詳細資料。

設定 MSAL.js 中的記錄

在建立 PublicClientApplication 執行個體的設定期間傳遞 loggerOptions 物件,來啟用 MSAL.js (JavaScript) 中的記錄。 唯一必要的 config 參數是應用程式的用戶端識別碼。 其他所有項目都是選用項目,但根據您的租用戶和應用程式模型,也可能是必要項目。

loggerOptions 物件具有下列屬性:

  • loggerCallback:Callback 函式,可由開發人員提供,以使用自訂方式來處理 MSAL 陳述式的記錄。 根據記錄的重新導向方式,實作 loggerCallback 函式。 loggerCallback 函式具有下列格式: (level: LogLevel, message: string, containsPii: boolean): void
    • 支援的記錄層級為:ErrorWarningInfoVerbose。 預設值為 Info
  • piiLoggingEnabled (選用):如果設定為 true,則會記錄個人和組織資料。 這預設為 false,因此您的應用程式未記錄個人資料。 個人資料記錄永遠不會被寫入如 Console、Logcat 或 NSLog 等的預設輸出。
import msal from "@azure/msal-browser"

const msalConfig = {
    auth: {
        clientId: "enter_client_id_here",
        authority: "https://login.microsoftonline.com/common",
        knownAuthorities: [],
        cloudDiscoveryMetadata: "",
        redirectUri: "enter_redirect_uri_here",
        postLogoutRedirectUri: "enter_postlogout_uri_here",
        navigateToLoginRequestUrl: true,
        clientCapabilities: ["CP1"]
    },
    cache: {
        cacheLocation: "sessionStorage",
        storeAuthStateInCookie: false,
        secureCookies: false
    },
    system: {
        loggerOptions: {
            logLevel: msal.LogLevel.Verbose,
            loggerCallback: (level, message, containsPii) => {
                if (containsPii) {
                    return;
                }
                switch (level) {
                    case msal.LogLevel.Error:
                        console.error(message);
                        return;
                    case msal.LogLevel.Info:
                        console.info(message);
                        return;
                    case msal.LogLevel.Verbose:
                        console.debug(message);
                        return;
                    case msal.LogLevel.Warning:
                        console.warn(message);
                        return;
                }
            },
            piiLoggingEnabled: false
        },
    },
};

下一步

如需更多程式碼範例,請參閱 Microsoft 身分識別平台程式碼範例