msAL에서 Java 로깅

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

로깅 수준

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

  • LogAlways: 이 로그 수준에서 수준 필터링이 수행되지 않습니다. 모든 수준의 로그 메시지가 기록됩니다.
  • Critical: 복구할 수 없는 애플리케이션 또는 시스템 충돌 또는 즉각적인 주의가 필요한 치명적인 오류를 설명하는 로그입니다.
  • Error: 문제가 발생하여 오류가 발생했음을 나타냅니다. 문제를 디버깅하고 식별하는 데 사용됩니다.
  • Warning: 반드시 오류나 장애가 발생했다는 뜻은 아니지만, 진단 및 문제의 원인을 정확히 찾아내기 위한 것입니다.
  • Informational: MSAL은 반드시 디버깅을 위한 것이 아니라 정보 제공을 위한 이벤트를 기록합니다.
  • Verbose (기본값): MSAL은 라이브러리 동작의 전체 세부 정보를 기록합니다.

메모

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

개인 및 조직 데이터

기본적으로 MSAL 로거는 매우 중요한 개인 또는 조직 데이터를 캡처하지 않습니다. 라이브러리는 사용자가 원할 경우 개인 및 조직 데이터의 로깅을 활성화할 수 있는 옵션을 제공합니다.

다음 섹션에서는 애플리케이션에 대한 MSAL 오류 로깅에 대한 자세한 내용을 제공합니다.

Java 로깅용 MSAL

Java MSAL을 사용하면 SLF4J(Java용 단순 로깅 외관)와 호환되는 한 앱에서 이미 사용 중인 로깅 라이브러리를 사용할 수 있습니다. Java MSAL은 SLF4J를 java.util.logging, LogbackLog4j와 같은 다양한 로깅 프레임워크에 대한 간단한 추상화로 사용합니다. SLF4J를 사용하면 사용자가 배포 시 원하는 로깅 프레임워크를 연결할 수 있으며 배포 시 자동으로 Logback에 바인딩됩니다. MSAL 로그는 콘솔에 기록됩니다. 이 문서에서는 Spring Boot 웹 애플리케이션에서 logback 프레임워크를 사용하여 MSAL4J 로깅을 사용하도록 설정하는 방법을 보여 줍니다.

  1. 로깅을 구현하려면 pom.xmllogback 패키지를 포함합니다.

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
    
  2. resources 폴더로 이동한 다음, logback.xml라는 파일을 추가하고 다음 코드를 삽입합니다. 그러면 콘솔에 로그가 추가됩니다. Appender class를 변경하여 로그를 파일, 데이터베이스 또는 원하는 다른 Appender에 기록하도록 할 수 있습니다.

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
        <root level="debug">
            <appender-ref ref="STDOUT" />
        </root>    
    </configuration>
    
  3. logging.config 속성을 main 메서드 앞의 logback.xml 파일 위치로 설정합니다. MsalWebSampleApplication.java로 이동한 다음 MsalWebSampleApplication public 클래스에 다음 코드를 추가합니다.

    @SpringBootApplication
    public class MsalWebSampleApplication {
    
        static { System.setProperty("logging.config", "C:\Users\<your path>\src\main\resources\logback.xml"); }
        public static void main(String[] arrgs) {
            // Console.log("main");
            // System.console().printf("Hello");
            // System.out.printf("Hello %s!%n", "World");
            System.out.printf("%s%n", "Hello World");
            SpringApplication.run(MsalWebSampleApplication.class, args);
        }
    }
    

테넌트에서 웹앱 및 웹 API에 대한 별도의 앱 등록이 필요합니다. 앱 등록 및 웹 API 범위 노출의 경우 사용자를 인증하고 웹 API를 호출하는 A 웹앱 시나리오의 단계를 따릅니다.

다른 로깅 프레임워크에 바인딩하는 방법에 대한 지침은 SLF4J 설명서를 참조하세요.

개인 및 조직 정보

기본적으로 MSAL 로깅은 개인 또는 조직 데이터를 캡처하거나 기록하지 않습니다. 다음 예제에서는 개인 또는 조직 데이터 로깅이 기본적으로 해제되어 있습니다.

PublicClientApplication app2 = PublicClientApplication.builder(PUBLIC_CLIENT_ID)
        .authority(AUTHORITY)
        .build();

클라이언트 애플리케이션 빌더에서 logPii()을(를) 설정하여 개인 및 조직 데이터 로깅을 사용하도록 설정합니다. 개인 또는 조직 데이터 로깅을 설정하는 경우 앱은 매우 중요한 데이터를 안전하게 처리하고 규정 요구 사항을 준수하는 책임을 져야 합니다.

다음 예제에서는 개인 또는 조직 데이터 로깅을 사용하도록 설정합니다.

PublicClientApplication app2 = PublicClientApplication.builder(PUBLIC_CLIENT_ID)
        .authority(AUTHORITY)
        .logPii(true)
        .build();

다음 단계

자세한 코드 샘플은 Microsoft ID 플랫폼 코드 샘플을 참조하세요.