본문 바로가기
Computer/Server

[게임서버] 로그를 만들어보자.

by 생각하는달팽이 2015. 12. 22.

안녕하세요?


이번시간에는 게임서버에서 꼭 필요한 로그 시스템을 적용할 예정입니다.


관련 정보는 아래의 사이트에서 참조하였습니다.


출처 : http://gameqa.tistory.com/86




우선 제가 적용시킬 서버 로그들은 다음과 같습니다.


아래는 위의 컨텐츠를 그대로 저장해두고 싶어 복사해두었습니다.

따로 문제가 생긴다면 비공개로 포스팅을 없애도록 하겠습니다.


1. 기록 단계별 분류

- 게임 로그는 DB에 쌓이는 것이기 때문에, DB Machine의 시스템 제약을 받습니다. 
   MMORPG는 동시에 수많은 액션이 발생하므로, 데이터 테이블을 여러 개 연결하는 작업이 많아지면,
   데이터 적재시 동시처리에 지연을 가져올 수 있습니다.

- 그래서 게임 로그는 게임서버에서 얻을 수 있는 단순한 정보를 남기고 (원본 로그)
   이를 다시 사람이 판별하기 쉽도록 변경하고, 여기에 부가정보를 더하는 과정을 (표준화 로그) 거치게 됩니다.

※ 최근에 개발된 게임들은, 별도의 재가공 없이 로그를 바로 읽을 수 있도록,
    표준화 로그 형태로 작업이 많이 이루어 지고 있습니다. 



2. 발생시간과 기록시간의 동시성에 따른 분류

A. 액션로그
- 액션이 발생할 때, 그 즉시 남는 로그를 액션로그라 하며, 대부분의 게임 로그는 여기에 포함됩니다.
- 액션로그는 액션의주체 + 액션정보 + 부가정보로 구성 됩니다.
   아래는 액션로그의 예제 입니다.

데이터

로그이름

로그분류

로그주체

서버 다운 내역

server close

시스템

server

계정 플레이 타임

account login

게임

server

account logout

게임

server

캐릭터 플레이 타임

character login

게임

server

character logout

게임

server

클래스별 캐릭터 생성

character create

게임

server

레벨 업

character levelup

게임

server

아이템별 사용빈도

character takeon con

게임

DB

개인상점 거래품목

character trade

게임

server

아이템 생성

item create

게임

server

아이템 습득

character get

게임

server

아이템 드랍

character drop

게임

server

아이템 소비

character useitem

게임

server

아이템 소멸

item delete

게임

server

아이템 거래

Item trade

게임

server

아이템 강화

character enchant

게임

server

캐릭터 killed

character killed

게임

server



B. 히스토리로그
- 게임의 변동내역을 쉽고 빠르게 알아볼 수 있도록 하기 위하여, 일정한 주기로 현재의 상태를 기록하는 로그를 말합니다.
- 히스토리로그는 시간 + 기록하고자하는정보 로 구성 됩니다.
   아래는 히스토리로그의 예제 입니다.

데이터

로그이름

로그분류

로그주체

동시접속자수

server user

시스템

server

서버 상태 내역

server ping

시스템

DB

클래스별 캐릭터 분포 – 전체

character class all

시스템

DB

클래스별 캐릭터 분포 – 접속중

character class con

시스템

server

아이템별 총 수량

item all

시스템

DB

지역별 로그인 정보

account login

게임

server

계정정보

결제정보

클래스별 로그인 정보

character login

게임

server

계정정보

결제정보

서버인원 통계

account login

게임

server

character login

게임

server

계정정보

결제정보

불량이용자 통계

admin ban

게임

server

계정정보




3. 액션별 상세 분류

- 액션 주체에 따라 시스템로그, 캐릭터로그, NPC로그(캐릭터가 주체가 아니면서 시스템로그가 아닌 모든 액션들) 로 분류를 나눕니다.

- 게임서버나 DB의 설계에 따라 적재할 수 있는 구체적인 데이터의 항목은 제한 될 수 있으므로, 
   실제 로그의 구현은 상황에 따라 case by case 로 진행하게 됩니다.
   아래는 액션별 로그의 예제 입니다.

A. 시스템 로그
 server start : 서버시작시 남는로그
 server close : 서버비정상 종료시 남는로그
 server user : 동시접속자를 일정주기로 체크하는 로그 
 server ping : 서버의 응답시간을 일정주기로 체크하는 로그
 character class all : 캐릭터 클래스의 총 숫자를 종류별로 일정주기로 체크하는 로그
 item all : 아이템의 총숫자를 종류별로 일정주기로 체크하는 로그
 character class con : 현재 접속중인 캐릭터들의 클래스 비율을 일정주기로 체크하는 로그
 character takeon con : 현재 접속중인 캐릭터들의 착용 아이템을 일정주기로 체크하는 로그

B. 캐릭터 로그
 account login : 접속자의 정보를 확인하는 로그 (ip, play time포함됨)
 account logout
 character create : 캐릭터 생성을 확인하는 로그
 character delete
 character login : 캐릭터의 로그인을 확인하는 로그
 character logout
 character lovelup : 캐릭터의 레벨업을 체크하는 로그
 character get :  아이템을 줍는 로그
 character drop
 character buy : 아이템을 상점에서 사는 로그
 character sell : 아이템을 상점에 파는 로그
 character trade : 개인상점 등 교환로그
 character upgrade : 아이템을 업그레이드 하는 로그
 character enchant
 character useitem : 소모성 아이템을 소모하는 로그
 character killed : 전투에 의해 캐릭터가 죽는로그
 admin : 운영자 명령어에 대한 로그

C. NPC 로그
 item create : 아이템을 생성하는 로그 (보통은 몬스터가 drop함)
 item delete
 monster create : 몬스터가 생성될때 남는로그
 monster killed1. 기록 단계별 분류


- 게임 로그는 DB에 쌓이는 것이기 때문에, DB Machine의 시스템 제약을 받습니다. 
   MMORPG는 동시에 수많은 액션이 발생하므로, 데이터 테이블을 여러 개 연결하는 작업이 많아지면,
   데이터 적재시 동시처리에 지연을 가져올 수 있습니다.

- 그래서 게임 로그는 게임서버에서 얻을 수 있는 단순한 정보를 남기고 (원본 로그)
   이를 다시 사람이 판별하기 쉽도록 변경하고, 여기에 부가정보를 더하는 과정을 (표준화 로그) 거치게 됩니다.

※ 최근에 개발된 게임들은, 별도의 재가공 없이 로그를 바로 읽을 수 있도록,
    표준화 로그 형태로 작업이 많이 이루어 지고 있습니다. 



2. 발생시간과 기록시간의 동시성에 따른 분류

A. 액션로그
- 액션이 발생할 때, 그 즉시 남는 로그를 액션로그라 하며, 대부분의 게임 로그는 여기에 포함됩니다.
- 액션로그는 액션의주체 + 액션정보 + 부가정보로 구성 됩니다.
   아래는 액션로그의 예제 입니다.

데이터

로그이름

로그분류

로그주체

서버 다운 내역

server close

시스템

server

계정 플레이 타임

account login

게임

server

account logout

게임

server

캐릭터 플레이 타임

character login

게임

server

character logout

게임

server

클래스별 캐릭터 생성

character create

게임

server

레벨 업

character levelup

게임

server

아이템별 사용빈도

character takeon con

게임

DB

개인상점 거래품목

character trade

게임

server

아이템 생성

item create

게임

server

아이템 습득

character get

게임

server

아이템 드랍

character drop

게임

server

아이템 소비

character useitem

게임

server

아이템 소멸

item delete

게임

server

아이템 거래

Item trade

게임

server

아이템 강화

character enchant

게임

server

캐릭터 killed

character killed

게임

server



B. 히스토리로그
- 게임의 변동내역을 쉽고 빠르게 알아볼 수 있도록 하기 위하여, 일정한 주기로 현재의 상태를 기록하는 로그를 말합니다.
- 히스토리로그는 시간 + 기록하고자하는정보 로 구성 됩니다.
   아래는 히스토리로그의 예제 입니다.

데이터

로그이름

로그분류

로그주체

동시접속자수

server user

시스템

server

서버 상태 내역

server ping

시스템

DB

클래스별 캐릭터 분포 – 전체

character class all

시스템

DB

클래스별 캐릭터 분포 – 접속중

character class con

시스템

server

아이템별 총 수량

item all

시스템

DB

지역별 로그인 정보

account login

게임

server

계정정보

결제정보

클래스별 로그인 정보

character login

게임

server

계정정보

결제정보

서버인원 통계

account login

게임

server

character login

게임

server

계정정보

결제정보

불량이용자 통계

admin ban

게임

server

계정정보




3. 액션별 상세 분류

- 액션 주체에 따라 시스템로그, 캐릭터로그, NPC로그(캐릭터가 주체가 아니면서 시스템로그가 아닌 모든 액션들) 로 분류를 나눕니다.

- 게임서버나 DB의 설계에 따라 적재할 수 있는 구체적인 데이터의 항목은 제한 될 수 있으므로, 
   실제 로그의 구현은 상황에 따라 case by case 로 진행하게 됩니다.
   아래는 액션별 로그의 예제 입니다.

A. 시스템 로그
 server start : 서버시작시 남는로그
 server close : 서버비정상 종료시 남는로그
 server user : 동시접속자를 일정주기로 체크하는 로그 
 server ping : 서버의 응답시간을 일정주기로 체크하는 로그
 character class all : 캐릭터 클래스의 총 숫자를 종류별로 일정주기로 체크하는 로그
 item all : 아이템의 총숫자를 종류별로 일정주기로 체크하는 로그
 character class con : 현재 접속중인 캐릭터들의 클래스 비율을 일정주기로 체크하는 로그
 character takeon con : 현재 접속중인 캐릭터들의 착용 아이템을 일정주기로 체크하는 로그

B. 캐릭터 로그
 account login : 접속자의 정보를 확인하는 로그 (ip, play time포함됨)
 account logout
 character create : 캐릭터 생성을 확인하는 로그
 character delete
 character login : 캐릭터의 로그인을 확인하는 로그
 character logout
 character lovelup : 캐릭터의 레벨업을 체크하는 로그
 character get :  아이템을 줍는 로그
 character drop
 character buy : 아이템을 상점에서 사는 로그
 character sell : 아이템을 상점에 파는 로그
 character trade : 개인상점 등 교환로그
 character upgrade : 아이템을 업그레이드 하는 로그
 character enchant
 character useitem : 소모성 아이템을 소모하는 로그
 character killed : 전투에 의해 캐릭터가 죽는로그
 admin : 운영자 명령어에 대한 로그

C. NPC 로그
 item create : 아이템을 생성하는 로그 (보통은 몬스터가 drop함)
 item delete
 monster create : 몬스터가 생성될때 남는로그
 monster killed1. 기록 단계별 분류


- 게임 로그는 DB에 쌓이는 것이기 때문에, DB Machine의 시스템 제약을 받습니다. 
   MMORPG는 동시에 수많은 액션이 발생하므로, 데이터 테이블을 여러 개 연결하는 작업이 많아지면,
   데이터 적재시 동시처리에 지연을 가져올 수 있습니다.

- 그래서 게임 로그는 게임서버에서 얻을 수 있는 단순한 정보를 남기고 (원본 로그)
   이를 다시 사람이 판별하기 쉽도록 변경하고, 여기에 부가정보를 더하는 과정을 (표준화 로그) 거치게 됩니다.

※ 최근에 개발된 게임들은, 별도의 재가공 없이 로그를 바로 읽을 수 있도록,
    표준화 로그 형태로 작업이 많이 이루어 지고 있습니다. 



2. 발생시간과 기록시간의 동시성에 따른 분류

A. 액션로그
- 액션이 발생할 때, 그 즉시 남는 로그를 액션로그라 하며, 대부분의 게임 로그는 여기에 포함됩니다.
- 액션로그는 액션의주체 + 액션정보 + 부가정보로 구성 됩니다.
   아래는 액션로그의 예제 입니다.

데이터

로그이름

로그분류

로그주체

서버 다운 내역

server close

시스템

server

계정 플레이 타임

account login

게임

server

account logout

게임

server

캐릭터 플레이 타임

character login

게임

server

character logout

게임

server

클래스별 캐릭터 생성

character create

게임

server

레벨 업

character levelup

게임

server

아이템별 사용빈도

character takeon con

게임

DB

개인상점 거래품목

character trade

게임

server

아이템 생성

item create

게임

server

아이템 습득

character get

게임

server

아이템 드랍

character drop

게임

server

아이템 소비

character useitem

게임

server

아이템 소멸

item delete

게임

server

아이템 거래

Item trade

게임

server

아이템 강화

character enchant

게임

server

캐릭터 killed

character killed

게임

server



B. 히스토리로그
- 게임의 변동내역을 쉽고 빠르게 알아볼 수 있도록 하기 위하여, 일정한 주기로 현재의 상태를 기록하는 로그를 말합니다.
- 히스토리로그는 시간 + 기록하고자하는정보 로 구성 됩니다.
   아래는 히스토리로그의 예제 입니다.

데이터

로그이름

로그분류

로그주체

동시접속자수

server user

시스템

server

서버 상태 내역

server ping

시스템

DB

클래스별 캐릭터 분포 – 전체

character class all

시스템

DB

클래스별 캐릭터 분포 – 접속중

character class con

시스템

server

아이템별 총 수량

item all

시스템

DB

지역별 로그인 정보

account login

게임

server

계정정보

결제정보

클래스별 로그인 정보

character login

게임

server

계정정보

결제정보

서버인원 통계

account login

게임

server

character login

게임

server

계정정보

결제정보

불량이용자 통계

admin ban

게임

server

계정정보




3. 액션별 상세 분류

- 액션 주체에 따라 시스템로그, 캐릭터로그, NPC로그(캐릭터가 주체가 아니면서 시스템로그가 아닌 모든 액션들) 로 분류를 나눕니다.

- 게임서버나 DB의 설계에 따라 적재할 수 있는 구체적인 데이터의 항목은 제한 될 수 있으므로, 
   실제 로그의 구현은 상황에 따라 case by case 로 진행하게 됩니다.
   아래는 액션별 로그의 예제 입니다.

A. 시스템 로그
 server start : 서버시작시 남는로그
 server close : 서버비정상 종료시 남는로그
 server user : 동시접속자를 일정주기로 체크하는 로그 
 server ping : 서버의 응답시간을 일정주기로 체크하는 로그
 character class all : 캐릭터 클래스의 총 숫자를 종류별로 일정주기로 체크하는 로그
 item all : 아이템의 총숫자를 종류별로 일정주기로 체크하는 로그
 character class con : 현재 접속중인 캐릭터들의 클래스 비율을 일정주기로 체크하는 로그
 character takeon con : 현재 접속중인 캐릭터들의 착용 아이템을 일정주기로 체크하는 로그

B. 캐릭터 로그
 account login : 접속자의 정보를 확인하는 로그 (ip, play time포함됨)
 account logout
 character create : 캐릭터 생성을 확인하는 로그
 character delete
 character login : 캐릭터의 로그인을 확인하는 로그
 character logout
 character lovelup : 캐릭터의 레벨업을 체크하는 로그
 character get :  아이템을 줍는 로그
 character drop
 character buy : 아이템을 상점에서 사는 로그
 character sell : 아이템을 상점에 파는 로그
 character trade : 개인상점 등 교환로그
 character upgrade : 아이템을 업그레이드 하는 로그
 character enchant
 character useitem : 소모성 아이템을 소모하는 로그
 character killed : 전투에 의해 캐릭터가 죽는로그
 admin : 운영자 명령어에 대한 로그

C. NPC 로그
 item create : 아이템을 생성하는 로그 (보통은 몬스터가 drop함)
 item delete
 monster create : 몬스터가 생성될때 남는로그
 monster killed





반응형