카테고리
- Scribe 방식
상용 서버 service_metrics-score2_log 개발 서버 service_metrics_test-score2_log - FTP 방식
파일명 규칙 score2_[날짜]_[서버]_[중복방지용id].json 예. score2_20180705_111500_GLOBAL-4.json - fluentd 방식 (로그 정의 템플릿)
서버 (2대 로드밸런싱) analytics-hivelog-03.withhive.com
analytics-hivelog-04.withhive.comTAG명 규칙 ha2union.game.[게임명약칭].score2_log 예. ha2union.game.samplegame.score2_log category 필드 값 [게임명약칭]_score2_log 예. {“category”:”samplegame_score2_log”,”aaa”:1} 자세한 전송 방법 안내 - http 방식 (로그 정의 템플릿)
서버 https://analytics-log.withhive.com category 필드 값 [게임명약칭]_score2_log 예. {“category”:”samplegame_score2_log”,”aaa”:1} 자세한 전송 방법 안내
로그 스펙
필드명 | 설명 | 타입 | 필수여부 |
date | 로그 발생 시각 형식: 년-월-일 시:분:초. 한국시간 (KST) 예. 2012-01-19 16:24:00 Scribe/FTP 전송 시 필수, Fluentd 전송 시 선택 |
string | N |
dateTime | 로그 발생 시각 형식: 년-월-일 시:분:초. 한국시간 (KST) 예. 2012-01-19 16:24:00 |
string | Y |
category | [게임 브랜드 이름]_[로그 이름]
게임 브랜드 이름은 app_id의 세 번째 항목 |
string | Y |
timezone | 로그에 입력하는 시간 파라미터 값의 UTC offset 값
|
string | Y |
channel | C2S: HIVE KAK: 카카오 LIN: 라인 WEI: 웨이보 STE: 스팀 |
string(3) | Y |
channel_uid | 로그인 채널에서의 유저 식별값(주로 bigint를 사용하지만 스트링형을 사용하는 채널들이 있을 수 있음) 라인과 같이 정보를 알수없는 경우는 “0” 으로 전송 |
string(64) | Y |
game | 게임 브랜드 네임을 사용 (예. derbydays). app_id의 세 번째 항목 예. com.com2us.littlelegends.kakao.freefull.apple.global.ios.universal => littlelegends* 같은 게임이라도 app_id의 세 번째 항목이 동일하지 않은 경우가 있기 때문에 game 필드 값은 하나로 통일해서 필수 전송해야 함 예1. com.gamevil.basebss.android.google.global.normal 예2. com.gamevil.basebssent.ios.apple.global.normal => basebss |
string(50) | Y |
server_id | 서버 구분 코드 서버코드표 참조하여 ‘서버 코드 (JSON 입력 코드)’를 입력 |
string | Y |
account_id | 서버 내에서 고유한 계정 구분 값 (PK) | bigint | Y |
account_level | 해당 계정의 레벨. 계정 레벨 개념이 없는 경우 0 | int | Y |
character_id | 서버 내에서 사용하는 캐릭터 식별자
– 캐릭터가 없는 게임에서는 캐릭터 식별자를 0으로 설정 |
bigint | Y |
character_type_id | 서버 내에서 사용하는 캐릭터 타입 구분 값 캐릭터가 없는 게임에서는 캐릭터 타입 구분 값을 0으로 설정 |
int | Y |
character_level | 서버 내에서 사용하는 캐릭터 레벨 값. 캐릭터가 없는 게임에서는 캐릭터 레벨 값을 0으로 설정 |
int | Y |
mode_id | 게임 모드 식별자 범위: [1–(2^31−1)] |
int | Y |
mode_name | 게임 모드 이름, ims표시용. 한글을 사용 |
string(50) | Y |
submode_id | 서브 게임 모드 식별값 (1부터 시작 큰값), 서브모드가 없는 게임의 경우 0 | int | Y |
submode_name | 서브 게임 모드 이름, 서브모드가 없는 게임의 경우 “0” ims 표시용. 한글을 사용 |
string(50) | Y |
grade_id | 등급 아이디 식별값 (1부터 시작), 등급 없는 게임의 경우 0 | int | Y |
grade_name | 등급명, 그레이드가 없는 게임의 경우 “0” ims 표시용. 한글을 사용 |
string(50) | Y |
score | 유저의 게임 점수. 점수 없이 승패로만 결과가 나오는 게임이라면 100을 승, 0을 패로 값을 정하면, 평균점수가 승률이 된다. |
int | Y |
client_ip | 클라이언트의 IP, 이 값으로 GeoIP를 이용하여 country값 추출 | string(32) | Y |
server_ip | 서버의 IP | string(32) | Y |
company | 로그의 대상이 되는 게임 제작 회사: 예. “C2S”: 컴투스, “GVI”: 컴투스홀딩스 |
string(3) | Y |
market | 마켓 정보 “TS”: SKT T store “OL”: KT Olleh Market “OZ”: LGU+ Oz Store “AP”: Apple App store “GO”: Google Play “SA”: Samsung Apps “LE”: Com2uS Lebi “MM”: ChinaMobile Mobile Market “SN”: Sina Weibo Point “36”: Qihu 360 Point “MO”: Momo Momo Point “DN”: DeNA Mobage Point “NA”: Naver App Store “AM”: Amazon “ON”: ONE store “FU”: Funtap “HU”: Huawei “OP”: OPPO “VI”: VIVO “XI”: 샤오미 “TC”: 텐센트 “HS”: Hive Store(Crossplay) “ST”: Steam |
string(2) | Y |
country | client_ip 를 못받아오는 경우 국가값을 직접 입력. ex) KR | string(2) | N |
is_emulator | 블루스택 등 PC용 에뮬레이터로 접속했으면 1, 아니면 0
PC버전으로 접속 시 2 |
int | 필수는 아니지만 권장 |
deviceid | HIVE did 값. 광고 식별자(Android AdvertisingID, iOS IDFA)를 추상화한 식별자 | bigint | N (18.04.12) |
app_id | HIVE에서 사용하는 AppID 예. ‘com.com2us.misample.normal.freefull.apple.global.ios.universal’ |
string(200) | N (19.01.25) |
guid | 매 로그마다 발생하는 고유 키 값 uuid와 같은 랜덤 문자열 형태를 권장 |
varchar(64) | N |
playtime | 초 단위 플레이타임 정보 | int | N (19.09.04) |
power | 전투 입장 전, 덱을 구성하는 캐릭터의 총 전투력 | int | N (19.09.11) |
battle_result | pvp 등에서 승리/패배/비김/포기 시 WIN,LOSE,DRAW,GIVEUP 입력 | string(10) | N (21.03.10) |
로그 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
{ "dateTime": "2021-11-26 13:32:45", "category": "[게임명]_score2_log", "channel": "C2S", "channel_uid": 11111, "game": "misample", "account_id": 0, "account_level": 96, "character_id": 0, "character_type_id": 0, "character_level": 0, "mode_id": 6, "mode_name": "\ub79c\ub529\uc561\uc158", "submode_id": 9000303, "submode_name": "lv043", "grade_id": 1, "grade_name": "\ub2f4\uae30", "score": 100, "market": "GO", "server_ip": "111.111.11.111", "client_ip": "111.111.11.111", "country": "JP", "company": "C2S", "server_id": 0, "app_id": "com.com2us.misample.normal.freefull.apple.global.ios.universal", "guid": "ca4bd34c867f4617a819ae139d8d6670", "playtime": 10, "power" : 1, "battle_result" : "GIVEUP" } |
활용 예시
- Mode > Submode > Grade 에 따라 유저들이 어느 지역에서 얼마나 플레이하는지 파악하기 위한 용도입니다.
- 신규 모드 또는 이벤트 모드 추가 시 유저의 플레이 성향을 파악하는 용도로 활용합니다.
- 작업 전 Mode > Submode > Grade로 구분해서 정의합니다. (PM, 플랫폼기획, BI기획 협의)