Play log
- 타이니팡2 for kakao, 아쿠팡 for kakao 같은 게임에서 플레이 횟수 및 점수를 분석하고자 함
- 수집 후 디비에 저장되는 정보는 [날짜],[앱],[유저],[모드],latest([레벨]),count,greatest([점수])
카테고리
상용 서버 172.19.1.10 | service_metrics-play_log |
개발 서버 222.112.182.65 | service_metrics_test-play_log |
* Web 방식 | |
로그 스펙
Note
스네이크 케이스(예: server_id
) 형태의 필드는 최종 저장소(BigQuery)에 저장될 때 카멜 케이스(예: serverId
) 형태로 변환되며, serverid
같은 스펙에 명시되지 않은 형태로 전송된 로그는 해당 컬럼에 저장되지 않습니다.
필드명 | 설명 | 타입 | 필수여부 |
date | 로그 발생 시각 형식: 년-월-일 시:분:초 예) 2012-01-19 16:24:00 | string | Y |
channel | C2S: HIVE KAK: 카카오 LIN: 라인 WEI: 웨이보 * STE: 스팀 | string(3) | Y |
user_id | 클라이언트에서 보내온 허브 uid (타 채널의 경우는 해당 채널에서 사용하는 user_id) | bigint | Y |
app_id | HIVE에서 사용하는 AppID 예)'com.com2us.derbyday.kakao.freefull.google.global.android.common' | string(200) | Y |
level | 게임 내에서 유저나 캐릭터의 레벨 | int | Y |
mode | 아쿠팡과 같이 여러개의 서브 게임으로 분류되어 있는 경우 게임 모드 id 값 (1부터 시작, 0은 안됨), 없으면 1 | int | Y |
score | 점수 | int | Y |
server_ip | 서버의 IP | string(32) | Y |
company | 로그의 대상이 되는 게임 제작 회사 예) "C2S": 컴투스, "GVI": 컴투스홀딩스 | string(3) | Y |
scribe 방식
<!--?php $GLOBALS['THRIFT_ROOT'] = '/dev/scribe-php'; // 해당경로는 절대적인 것이 아님. 환경에 맞게 수정하기 바람. include_once $GLOBALS['THRIFT_ROOT'].'/scribe.php'; include_once $GLOBALS['THRIFT_ROOT'].'/transport/TSocket.php'; include_once $GLOBALS['THRIFT_ROOT'].'/transport/TFramedTransport.php'; include_once $GLOBALS['THRIFT_ROOT'].'/protocol/TBinaryProtocol.php'; … public function writePlayLog($app_id, $channel, $user_id) // 함수또한 예제임. 각자에 맞게 수정요함.(단 category는 반드시 위의 서버 정보의 카테고리명 으로 고정) { $msg['category'] = 'service_metrics-play_log'; $msg['message'] = array(); $msg['message']['date'] = date('Y-m-d H:i:s', time()); $msg['message']['app_id'] = $app_id; $msg['message']['channel'] = $channel; $msg['message']['user_id'] = $user_id; $msg['message']['level'] = $level; $msg['message']['mode'] = $mode; $msg['message']['score'] = $score; $msg['message']['client_ip'] = $client_ip; $msg['message']['server_ip'] = $server_ip; $msg['message'] = json_encode($msg['message']); $entry = new LogEntry($msg); $messages = array($entry); //var_dump($messages); $socket = new TSocket('localhost', 1463, TRUE); // log를 전송할 목적지 host(포트고정) $transport = new TFramedTransport($socket); $protocol = new TBinaryProtocol($transport, FALSE, FALSE); $scribe_client = new scribeClient($protocol, $protocol); $transport->open();<br ?--> $scribe_client->Log($messages);
$transport->close();
}
?>
로그 예제
{
"date": "2013-01-25 18:01:07",
"channel": "KAK",
"user_id": 88190614797050961,
"app_id": "com.com2us.tinypang.kakao.freefull.google.global.android.common",
"level": 14,
"mode": 1,
"score": 142888,
"server_ip": "112.175.xxx.xxx",
"client_ip": "117.111.6.47"
}
{
"date": "2013-01-25 18:01:07",
"channel": "KAK",
"user_id": 88577601051580384,
"app_id": "com.com2us.tinypang.kakao.freefull.google.global.android.common",
"level": 12,
"mode": 1,
"score": 100170,
"server_ip": "112.175.xxx.xxx",
"client_ip": "183.34.73.205"
}