Share via


MSAL.js의 로깅

MSAL(Microsoft 인증 라이브러리) 앱은 문제를 진단하는 데 도움이 되는 로그 메시지를 생성합니다. 앱은 몇 줄의 코드를 사용하여 로깅을 구성하고 세부 정보 수준 및 개인 데이터와 조직 데이터가 기록되는지 여부에 대한 제어를 사용자 지정할 수 있습니다. MSAL 로깅 구현을 만들고 사용자에게 인증 문제가 있을 때 로그를 제출할 수 있는 방법을 제공하는 것이 좋습니다.

로깅 수준

MSAL은 여러 수준의 로깅 세부 정보를 제공합니다.

  • LogAlways: 이 로그 수준에서 수준 필터링이 수행되지 않습니다. 모든 수준의 로그 메시지를 로그합니다.
  • 위험: 복구할 수 없는 애플리케이션 또는 시스템 크래시나 즉각적인 주의가 필요한 치명적인 오류를 설명하는 로그입니다.
  • 오류: 무언가 잘못되어 오류가 발생했음을 나타냅니다. 디버깅 및 문제 식별에 사용됩니다.
  • 경고: 오류 또는 장애가 반드시 발생한 것은 아니지만, 문제를 진단하고 파악하기 위한 것입니다.
  • 정보 제공: MSAL은 반드시 디버깅하기 위한 것이 아니라 정보를 제공하기 위해 사용되는 이벤트를 기록합니다.
  • 세부 정보(기본): MSAL은 라이브러리 동작의 전체 세부 정보를 기록합니다.

참고 항목

모든 MSAL SDK에 대해 모든 로그 수준을 사용할 수 있는 것은 아닙니다.

개인 및 조직 데이터

기본적으로 MSAL 로거는 매우 중요한 개인 또는 조직 데이터를 캡처하지 않습니다. 라이브러리는 개인 및 조직 데이터 로깅을 사용하도록 설정하는 옵션을 제공합니다.

다음 섹션에서는 애플리케이션의 MSAL 오류 로깅에 대한 자세한 정보를 제공합니다.

MSAL.js에서 로깅 구성

PublicClientApplication 인스턴스를 만들기 위해 구성하는 중에 loggerOptions 개체를 전달하여 MSAL.js(JavaScript)에서 로깅을 사용하도록 설정할 수 있습니다. 유일한 필수 구성 매개 변수는 애플리케이션의 클라이언트 ID입니다. 다른 모든 것은 선택 사항이지만 테넌트 및 애플리케이션 모델에 따라 필요할 수 있습니다.

loggerOptions 개체에는 다음 속성이 있습니다.

  • loggerCallback: 사용자 지정 방식으로 MSAL 문의 로깅을 처리하기 위해 개발자가 제공할 수 있는 콜백 함수입니다. 로그를 리디렉션하려는 방법에 따라 loggerCallback 함수를 구현합니다. loggerCallback 함수의 형식은 (level: LogLevel, message: string, containsPii: boolean): void입니다.
    • 지원되는 로그 수준은 Error, Warning, Info, 및 Verbose입니다. 기본값은 Info입니다.
  • piiLoggingEnabled(선택 사항): true로 설정하면 개인 및 조직 데이터를 로그합니다. 애플리케이션에서 개인 데이터를 로그하지 않도록 기본적으로 false로 설정됩니다. 개인 데이터 로그는 콘솔, 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 ID 플랫폼 코드 샘플을 참조하세요.