로그

로그

개요

DRX의 로그는 동일한 로그를 다음의 두 경로로 출력한다.

  • 표준 출력

  • 로그 파일

표준 출력의 경우 서비스 상태로 동작시에는 출력되지 않고, 파일 출력의 경우는 메인 로그와 리소스 로그로 분산 저장된다.

파일

저장 위치

내용

메인 로그 파일

{DRX 설치 경로}/logs/main.log

DRX 자체 동작. 리소스별 동작 내용 제외

리소스별 로그 파일

{DRX 설치 경로}/logs/리소스명/리소스명.log

리소스의 동작 내용

각각의 파일은 설정된 크기에 도달하면 파일을 보관 처리하고 새로 생성한다.

각각의 파일은 파일 크기 제한 설정값에 따라 날짜와 시간이 포함된 파일 파일로 분기된다. (예: main_2018-11-22_1432.log)

로그 조회

서비스로 동작중인 DRX 로그를 실시간으로 출력하기 위해 다음과 같은 형태의 명령이 제공된다.

drx-ctl log {options} [resource or all]

지원되는 옵션:

옵션

단축옵션

설명

--include-main

-m

메인 로그를 출력한다. 이 옵션을 지정하지 않으면 리소스별 로그만 출력된다.

--lines {값}

-n {값}

최초 시작시 가장 최근의 로그에서 지정한 라인 수 만큼 출력한다.

이 명령을 실행하면 지속적으로 로그 파일의 갱신 내용을 출력하고, Ctrl-C를 통해 종료할 수 있다.

설정

설정 파일(drx.conf)에서 설정 가능한 로그 관련 항목은 다음과 같다.

항목

값

범위

설명

loglevel-stdout

로그 레벨

trace, debug, info, warning, error, critical, off

표준 출력되는 로그의 레벨을 지정한다.

loglevel-file

로그 레벨

trace, debug, info, warning, error, critical, off

파일로 출력되는 로그의 레벨을 지정한다.

logfile-max-size

파일 크기

용량 단위 (예: 10MB)

로그 파일이 지정한 용량에 도달하면 현재 로그 파일을 보관하고 새로 생성한다.

logfile-max-count

파일 개수

숫자

현재 로그 파일과 보관된 로그 파일의 최대 개수.

로그 레벨의 경우는 drx-ctl을 통해 실시간으로 변경할 수 있다.

drx-ctl set console-loglevel [level]
drx-ctl set file-loglevel [level]

단, 서비스 모드로 실행중인 DRX의 표준 출력 레벨은 조절할 수 없다.

출력 형식

레벨/날짜 시간 쓰레드 로거:태그] 내용

항목별 상세

항목

형식

예시

설명

로그 레벨/날짜

{레벨}{날짜}

I1004
C0928

로그 레벨과 날짜를 붙여서 출력한다.
로그 레벨은 아래에서 별도로 설명한다.

시간

시:분:초.마이크로초

16:44:13.790530

-

쓰레드

t{쓰레드ID}

t3056

해당 로그가 생성된 쓰레드 ID

로거

로거 이름

main

로그의 카테고리를 나누기 위한 로거명

태그

태그명

license
c-:o

로거의 하위 범위를 나타내거나 채널의 상세 정보를 나타내는 역할

로그 레벨

약어

로그 레벨

범위

예시

T

trace

아주 자세한 동작 단계별 로그

함수 수준의 실행 단계 출력, 객체의 생성/파괴 등

D

debug

문제가 발생하지 않으면 확인할 필요가 없는 수준의 내용

내부적으로 사용되는 값의 변화, 통신 내용 등

I

info

상태 변화나 동작에 관한 일반적인 내용

접속 이벤트, 채널 상태 변화 등

W

warning

의도하지 않은 문제가 발생하였지만 동작을 다시 시작하거나 지속하는데 문제가 없는 상황

타임아웃, 연결 실패 등

E

error

의도하지 않은 문제가 발생하여 해당 동작을 지속할 수 없는 상황

잘못된 프로토콜 헤더, 라이선스 오류 등

C

critical

프로그램의 실행을 지속할 수 없는 심각한 오류

예외가 발생하여 프로그램을 종료할 때

로그 목록

trace와 debug 레벨의 경우에는 개발 과정에서 수시로 변화할 수 있으므로, 이 문서에서는 info~critical 까지의 레벨에 대해서만 정리한다.

main

태그

레벨

내용

설명

값의 예

비고

소스 파일

태그

레벨

내용

설명

값의 예

비고

소스 파일



​


















info

Compiled at {날짜} {시간}

DRX가 컴파일된 시간

Oct 4 2018 09:04:38

 

drx.cpp

info

System Locale: {locale}

현재 시스템 로케일 값

en_US.windows-1252

 

drx.cpp

info

DRX path: {DRX 설치경로}

DRX가 설치된 경로

C:\Program Files\DRX

환경변수 'DRX_PATH'에 정의된 값.

drx.cpp

info

EXE path: {실행파일경로}

현재 실행한 DRX가 위치한 경로

C:\Program Files\DRX\bin

 

drx.cpp

info

Starting in foreground mode

Foreground 모드로 실행

-

설정을 모두 읽어 프로그램 초기화가 완료된 상태.

drx.cpp

info

Starting in daemonize mode

Daemonize 모드로 실행

-

설정을 모두 읽어 프로그램 초기화가 완료된 상태.

drx.cpp

error

Initialization failed

초기화 실패

-

환경 설정을 읽는데 실패했다.

drx.cpp

warning

Environment variable 'DRX_PATH' is not exists

환경변수 DRX_PATH가 설정되지 않음

 

 

instance.cpp

info

Closing drx

DRX 종료 중

-

DRX를 종료하는 과정에서의 마지막 로그.

core.cpp

error

System error at quit. ({오류번호}: {오류내용})

DRX 종료 중에 시스템 오류 발생

-

DRX 종료 과정에서 오류가 발생함.

core.cpp

info

Read resources configuration success

리소스별 세션 정보를 읽는데 성공함

-

BSR 환경 설정으로부터 리소스별 설정을 읽음.

core.cpp

warning

Read resources configuration failed

리소스별 세션 정보를 읽는데 실패함

-

리소스가 없을 경우 발생할 수 있다.

core.cpp

info

License is available

정상적인 라이선스로 확인됨

-

 

core.cpp

error

License is not available

라이선스를 사용할 수 없음

-

프로그램을 종료한다.

core.cpp

info

Resource create complete

모든 리소스 생성 완료

-

설정된 리소스를 모두 생성함. IPC 서비스를 사용할 수 있다.

core.cpp

info

Create resource [리소스명]

리소스 생성 시작

 

해당 리소스의 생성을 시작함.

drx_manager.cpp

error

Resource name [리소스명] is already exists

같은 리소스가 이미 존재함

 

리소스 설정이 잘못되어 동일 이름의 리소스가 두 개 이상 존재하거나, IPC를 통해 이미 존재하는 리소스를 다시 추가한 경우.

drx_manager.cpp

error

Failed to create resource [리소스명]. {오류내용}

리소스 생성에 실패함

 

리소스 생성 도중에 오류가 발생함. 프로그램을 종료한다.

drx_manager.cpp

info

Resource [리소스명] deleted

리소스가 삭제됨

 

IPC를 통해 리소스를 삭제한 경우.

drx_manager.cpp

info

IPC service started

IPC 서비스가 시작됨

-

IPC 서버가 생성됨.

drx_manager.cpp

error

Failed to start IPC service

IPC 서비스 시작에 실패함

-

메모리 부족 이외에는 발생 가능성이 거의 없다.

drx_manager.cpp

error

System error while stopping. ({오류번호}: {오류내용})

리소스, IPC, 패킷 처리 중단중 오류 발생

 

프로그램 종료 과정중 오류가 발생함.

drx_manager.cpp

license

info

Verify license is available

라이선스 확인 시작

-

라이선스 확인 과정이 시작됨.

drx_manager.cpp

info

License applied

라이선스가 적용됨

-

set license 명령으로 라이선스를 적용하면 출력됨.

drx_manager.cpp

error

Failed to get drx path

DRX 설치 경로를 얻는데 실패함

-

환경변수 'DRX_PATH'가 없는 경우일 수 있다.

drx_manager.cpp

info

Checking license for [라이선스파일]

라이선스 파일의 확인 시작

C:\Program Files\DRX\drx.lic

해당 경로의 라이선스 파일을 확인한다.

drx_manager.cpp

error

Failed to initializing license system. {오류내용}

라이선스 초기화에 실패함

 

라이선스를 읽는데 실패함. 오류 내용은 RLM에서 출력된 내용이다.

drx_manager.cpp

error

License file not found at [라이선스파일]

라이선스 파일을 찾지 못함

 

지정한 경로에 파일이 존재하지 않음. set license 명령사용시 출력됨.

drx_manager.cpp

error

Invalid License {제품명}({오류번호})

잘못된 라이선스

drx(-40)

라이선스가 잘못되었거나 만료됨. 오류번호는 RLM의 오류번호이다.

drx_manager.cpp

error

License Expired {제품명}

라이선스 기간초과

drx

기간이 초과되어 사용할 수 없다. 라이선스 교체 필요.

drx_manager.cpp

info

License Status: {라이선스상태}

정상적인 라이선스로 인식됨

Permanent

 

drx_manager.cpp

plugins



info

All plugin loaded