마수세계 서버 Trinitycore 분석 3: 로그 모듈

1: 로그 인터페이스


TrinityCore 로그에는 Trace, Debug, Info, Warn, Error, Fatal 등 6가지 레벨이 있습니다.
각 인터페이스는 다음과 같은 6개에 해당합니다(filterType__ 또한 구성 파일에 지정됨).
#define TC_LOG_TRACE(filterType__, ...)
#define TC_LOG_DEBUG(filterType__, ...)
#define TC_LOG_INFO(filterType__, ...)
#define TC_LOG_WARN(filterType__, ...)
#define TC_LOG_ERROR(filterType__, ...)
#define TC_LOG_FATAL(filterType__, ...)

2: 로그 유형 및 Appender


설명: 이것은 프로필의 주석에서 상세하게 말했으니 바로 두 단락을 붙여라
Appender 구성:
#  Appender config values: Given a appender "name"
#    Appender.name
#        Description: Defines 'where to log'
#        Format:      Type,LogLevel,Flags,optional1,optional2,optional3
#
#                     Type
#                         0 - (None)
#                         1 - (Console)
#                         2 - (File)
#                         3 - (DB)
#
#                     LogLevel
#                         0 - (Disabled)
#                         1 - (Trace)
#                         2 - (Debug)
#                         3 - (Info)
#                         4 - (Warn)
#                         5 - (Error)
#                         6 - (Fatal)
#
#                     Flags:
#                         0 - None
#                         1 - Prefix Timestamp to the text
#                         2 - Prefix Log Level to the text
#                         4 - Prefix Log Filter type to the text
#                         8 - Append timestamp to the log file name. Format: YYYY-MM-DD_HH-MM-SS (Only used with Type = 2)
#                        16 - Make a backup of existing file before overwrite (Only used with Mode = w)
#
#                     Colors (read as optional1 if Type = Console)
#                         Format: "fatal error warn info debug trace"
#                         0 - BLACK
#                         1 - RED
#                         2 - GREEN
#                         3 - BROWN
#                         4 - BLUE
#                         5 - MAGENTA
#                         6 - CYAN
#                         7 - GREY
#                         8 - YELLOW
#                         9 - LRED
#                        10 - LGREEN
#                        11 - LBLUE
#                        12 - LMAGENTA
#                        13 - LCYAN
#                        14 - WHITE
#
#                     File: Name of the file (read as optional1 if Type = File)
#                         Allows to use one "%s" to create dynamic files
#
#                     Mode: Mode to open the file (read as optional2 if Type = File)
#                          a - (Append)
#                          w - (Overwrite)
#
#                     MaxFileSize: Maximum file size of the log file before creating a new log file

로그 구성:
#  Appender config values: Given a appender "name"
#    Appender.name
#        Description: Defines 'where to log'
#        Format:      Type,LogLevel,Flags,optional1,optional2,optional3
#
#                     Type
#                         0 - (None)
#                         1 - (Console)
#                         2 - (File)
#                         3 - (DB)
#
#                     LogLevel
#                         0 - (Disabled)
#                         1 - (Trace)
#                         2 - (Debug)
#                         3 - (Info)
#                         4 - (Warn)
#                         5 - (Error)
#                         6 - (Fatal)
#
#                     Flags:
#                         0 - None
#                         1 - Prefix Timestamp to the text
#                         2 - Prefix Log Level to the text
#                         4 - Prefix Log Filter type to the text
#                         8 - Append timestamp to the log file name. Format: YYYY-MM-DD_HH-MM-SS (Only used with Type = 2)
#                        16 - Make a backup of existing file before overwrite (Only used with Mode = w)
#
#                     Colors (read as optional1 if Type = Console)
#                         Format: "fatal error warn info debug trace"
#                         0 - BLACK
#                         1 - RED
#                         2 - GREEN
#                         3 - BROWN
#                         4 - BLUE
#                         5 - MAGENTA
#                         6 - CYAN
#                         7 - GREY
#                         8 - YELLOW
#                         9 - LRED
#                        10 - LGREEN
#                        11 - LBLUE
#                        12 - LMAGENTA
#                        13 - LCYAN
#                        14 - WHITE
#
#                     File: Name of the file (read as optional1 if Type = File)
#                         Allows to use one "%s" to create dynamic files
#
#                     Mode: Mode to open the file (read as optional2 if Type = File)
#                          a - (Append)
#                          w - (Overwrite)
#
#                     MaxFileSize: Maximum file size of the log file before creating a new log file

3: 구성 예:

Appender.Console=1,3,0
Appender.Server=2,2,0,Server.log,w
Logger.root=2,Console Server

위의 세 문장은 두 개의 Appender:Console, Server, 하나의log type:root를 정의했다
Appender.Console 설명은 로그를 터미널로 내보내고 최소 출력 레벨은 Info이며 출력 글꼴 색상은 검은색(터미널에 따라 다름)
Appender.서버 설명은 로그를 파일에 출력합니다. 최저 출력 수준은 Debug이고 출력 파일은 (Server.log)입니다. 다시 쓰기(추가되지 않음) 방식으로 씁니다.
Logger.root 최소 출력 수준은 Info, Console 및 Server 구성 사용

넷째, 밑바닥 실현


여기서 간단히 말하면 그다지 깊이 들어가지 않는다
TC_로LOG_INFO("qch", "Hello, world");예를 들다
이 문장은 실현상 호출되었다
if(Log::instance()::ShouldLog("qch", LOG_LEVEL_INFO) )
        Log::instance()::outMessage ("qch", LOG_LEVEL_INFO, "Hello,world");

ShouldLog는 구성 파일의 최소 로그 출력 레벨과 LOG_를 직접LEVEL_인포는 비교만 하면 돼.
out Message는 비교적 번거롭다. 층층이 호출되고 관심 있는 것은 가서 볼 수 있다. 여기는 설명이 많지 않다.
 
Appender의 Type을 3(DB)으로 설정하면 로그를 쓸 때마다 auth 라이브러리의 logs 테이블에 기록을 삽입합니다.
INSERT INTO logs (time, realm, type, level, string) VALUES (1409544332, 0, 'qch', 3,'Hello, world
')

좋은 웹페이지 즐겨찾기