서버 메시지 로깅(Realtime 서버) - 아마존 GameLift

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

서버 메시지 로깅(Realtime 서버)

Realtime 서버의 사용자 지정 서버 메시지를 로그 파일로 캡처할 수 있습니다. 사용자 지정 서버 로깅에 대한 자세한 내용은 서버 메시지 로깅(사용자 지정 서버)을 참조하세요.

로그 파일에 출력할 수 있는 메시지 유형에는 여러 가지가 있습니다(서버 스크립트의 메시지 로깅 참조). 사용자 지정 메시지 외에도, Realtime 서버는 동일한 메시지 유형을 사용하여 시스템 메시지를 출력하고 동일한 로그 파일에 기록합니다. 플릿의 로깅 수준을 조정하여 서버에서 생성되는 로깅 메시지의 양을 줄일 수 있습니다(로깅 수준 조정 참조).

중요

게임 세션당 로그 파일 크기에는 제한이 있습니다 (의 Amazon GameLift 엔드포인트 및 할당량 참조). AWS 일반 참조 게임 세션이 종료되면 Amazon은 서버 로그를 Amazon Simple Storage Service (Amazon S3) 에 GameLift 업로드합니다. GameLift Amazon은 제한을 초과하는 로그를 업로드하지 않습니다. 로그는 매우 빠르게 증가하여 크기 제한을 초과할 수 있습니다. 로그를 모니터링하고 로그 출력을 필요한 메시지로만 제한해야 합니다.

서버 스크립트의 메시지 로깅

Realtime 서버용 스크립트에서 사용자 지정 메시지를 출력할 수 있습니다. 다음 단계에 따라 로그 파일에 서버 메시지를 전송합니다.

  1. 로거 객체에 대한 참조를 보관할 변수를 생성합니다.

    var logger;
  2. init() 함수에서는 세션 객체에서 로거를 가져와 로거 변수에 할당합니다.

    function init(rtSession) { session = rtSession; logger = session.getLogger(); }
  3. 로거에서 적절한 함수를 호출하여 메시지를 출력합니다.

    디버그 메시지

    logger.debug("This is my debug message...");

    정보 메시지

    logger.info("This is my info message...");

    경고 메시지

    logger.warn("This is my warn message...");

    오류 메시지

    logger.error("This is my error message...");

    치명적 오류 메시지

    logger.fatal("This is my fatal error message...");

    고객에게 치명적인 오류 메시지 발생

    logger.cxfatal("This is my customer experience fatal error message...");

스크립트의 로깅 문의 형식의 예는 Realtime 서버 스크립트 예제을 참조하세요.

로그 파일의 출력은 예제 로그의 다음 줄에 표시된 것처럼 메시지 유형(DEBUGINFOWARNERRORFATAL,,,,,CXFATAL)을 나타냅니다.

09 Sep 2021 11:46:32,970 [INFO] (gamelift.js) 215: Calling GameLiftServerAPI.InitSDK...
09 Sep 2021 11:46:32,993 [INFO] (gamelift.js) 220: GameLiftServerAPI.InitSDK succeeded
09 Sep 2021 11:46:32,993 [INFO] (gamelift.js) 223: Waiting for Realtime server to start...
09 Sep 2021 11:46:33,15 [WARN] (index.js) 204: Connection is INSECURE. Messages will be sent/received as plaintext.

서버 로그 액세스

게임 세션이 종료되면 Amazon은 GameLift 자동으로 로그를 Amazon S3에 저장하고 14일 동안 보관합니다. GetGameSessionLogUrl API 호출을 사용하여 게임 세션의 로그 위치를 가져올 수 있습니다. API 호출에서 반환된 URL을 사용하여 로그를 다운로드합니다.

로깅 수준 조정

로그는 매우 빠르게 증가하여 크기 제한을 초과할 수 있습니다. 로그를 모니터링하고 로그 출력을 필요한 메시지로만 제한해야 합니다. Realtime 서버의 경우 플릿의 런타임 구성에 loggingLevel:LOGGING_LEVEL 형식으로 파라미터를 제공하여 로깅 수준을 조정할 수 있습니다. 여기에서 LOGGING_LEVEL은 다음 값 중 하나입니다.

  1. debug

  2. info(기본값)

  3. warn

  4. error

  5. fatal

  6. cxfatal

이 목록은 가장 심각하지 않은 상태(debug)에서 가장 심각한 상태(cxfatal) 순으로 정렬됩니다. 단일 loggingLevel을 설정하면 서버는 해당 심각도 수준 또는 더 높은 심각도 수준에서만 메시지를 기록합니다. 예를 들어, loggingLevel:error의 설정을 통해 플릿의 모든 서버가 로그에 error, fatal, cxfatal 메시지만 기록하도록 할 수 있습니다.

플릿을 생성할 때 및 그 이후에 플릿에 대한 로깅 수준을 설정할 수 있습니다. 플릿이 실행된 후 플릿의 로깅 수준을 변경하면 업데이트 이후에 생성된 게임 세션의 로그에만 영향을 미칩니다. 기존 게임 세션의 로그는 영향을 받지 않습니다. 플릿을 생성할 때 로깅 수준을 설정하지 않으면 서버에서 로깅 수준을 기본값(info)으로 설정합니다. 로깅 수준 설정에 대한 지침은 다음 섹션을 참조하세요.

Realtime 서버 플릿 생성 시 로깅 수준 설정(콘솔)

Amazon GameLift 관리형 플릿 생성의 지침에 따라 플릿을 생성하고 다음을 추가합니다.

  • 프로세스 관리 단계의 서버 프로세스 할당 하위 단계에서 로깅 수준 키-값 쌍(예:loggingLevel:error)을 시작 파라미터 값으로 제공합니다. 영숫자가 아닌 문자(쉼표 제외)를 사용하여 로깅 수준을 추가 파라미터(예: loggingLevel:error +map Winter444)와 구분합니다.

Realtime 서버 플릿 생성 시 로깅 수준 설정(AWS CLI)

Amazon GameLift 관리형 플릿 생성의 지침에 따라 플릿을 생성하고 다음을 추가합니다.

  • create-fleet--runtime-configuration 파라미터 인수에서 로깅 수준 키-값 쌍(예:loggingLevel:error)을 Parameters의 값으로 제공합니다. 영숫자가 아닌 문자(쉼표 제외)를 사용하여 로깅 수준을 추가 파라미터와 구분합니다. 다음 예를 참조하세요.

--runtime-configuration "GameSessionActivationTimeoutSeconds=60, MaxConcurrentGameSessionActivations=2, ServerProcesses=[{LaunchPath=/local/game/myRealtimeLaunchScript.js, Parameters=loggingLevel:error +map Winter444, ConcurrentExecutions=10}]"
Realtime 서버 플릿 실행 시 로깅 수준 설정(콘솔)

의 지침에 따라 Amazon GameLift Console을 사용하여 플릿을 업데이트하고 다음을 추가하십시오. 플릿 구성 업데이트

  • 플릿 편집 페이지의 서버 프로세스 할당에서 로깅 수준 키-값 쌍(예:loggingLevel:error)을 시작 파라미터 값으로 제공합니다. 영숫자가 아닌 문자(쉼표 제외)를 사용하여 로깅 수준을 추가 파라미터(예: loggingLevel:error +map Winter444)와 구분합니다.

Realtime 서버 플릿 실행 시 로깅 수준 설정(AWS CLI)

플릿 구성 업데이트의 지침에 따라 AWS CLI를 사용하여 플릿을 업데이트하고 다음을 추가합니다.

  • update-runtime-configuration--runtime-configuration 파라미터 인수에서 로깅 수준 키-값 쌍(예:loggingLevel:error)을 Parameters의 값으로 제공합니다. 영숫자가 아닌 문자(쉼표 제외)를 사용하여 로깅 수준을 추가 파라미터와 구분합니다. 다음 예를 참조하세요.

--runtime-configuration "GameSessionActivationTimeoutSeconds=60, MaxConcurrentGameSessionActivations=2, ServerProcesses=[{LaunchPath=/local/game/myRealtimeLaunchScript.js, Parameters=loggingLevel:error +map Winter444, ConcurrentExecutions=10}]"