コンテンツにスキップ

ログインログ

このログはユーザーログインによって保存されます。新しいゲームに参加するユーザーやプロモーションのためにゲームをプレイするユーザーの現在のステータスを確認できます。

カテゴリー

  • スクリプトタイプ
共通サーバー service_metrics-login_log
テストサーバー test-login_log
  • FTPタイプ
命名規則 login_[日付][サーバー][重複回避用ID].json 例: login_20180705_111500_GLOBAL-4.json
  • Fluentdタイプ(ログ定義に基づく)
サーバー (2つのサーバーへの負荷分散) analytics-hivelog-03.withhive.com analytics-hivelog-04.withhive.com
タグの命名規則 ha2union.game.[ゲームの短い名前].login_log 例: ha2union.game.samplegame.login_log
categoryフィールドの値 [ゲームの短い名前]_login_log 例: {"category":"samplegame_login_log","aaa":1}
詳細な伝送方法
  • HTTPタイプ(ログ定義に基づく)
サーバー https://analytics-log.withhive.com
categoryフィールドの値 [ゲームの短い名前]_login_log 例: {"category":"samplegame_login_log","aaa":1}
詳細な送信方法

ログ仕様

Note

スネークケースのフィールド、例えば server_id は、最終ストレージ(BigQuery)に保存される際にキャメルケース、例えば serverId に変換されます。また、serverid のように未指定の形式で送信されたログは、その列に保存されません。

フィールド名 説明 タイプ 必須
date ログを保存する時間
フォーマット: yyyy-mm-dd hh🇲🇲ss
例: 2012-01-19 16:24:00
Scribe/FTPタイプでは必須、Fluentdタイプではオプション
string N
dateTime ログを保存する時間
フォーマット: yyyy-mm-dd hh🇲🇲ss
例: 2012-01-19 16:24:00
string Y
category [ゲームのブランド名]_[ログ名]
ゲームのブランド名はapp_idの3番目の項目です
例: "derbyday_login_log"
string Y
timezone ログ内の時間パラメータのUTCオフセット
ログ定義をscribeまたはftpタイプとして送信する際、dateの値は常にKSTであるため、timezoneの値を**空白またはGMT+09:00**として固定します。
例: “GMT+09:00”
* ログ定義をfluentdまたはhttpタイプとして送信する際、dateTimeの値に応じてtimezoneの値を柔軟に設定します。
例: “GMT+10:30”
string Y
channel ログインチャネル
C2S: HIVE
KAK: Kakao Talk
LIN: LINE
WEI: Weibo
GVL: Gamevile Live
STE: Steam
string(3) Y
user_id 設定されたチャネルフィールドで使用されるユーザー識別子
C2S: vid
KAK: App Centerによって発行されたユーザー識別子
LIN: App Centerによって発行されたユーザー識別子
WEI: Weibo
bigint Y
app_id Hive SDKが使用するAppID
例: 'com.com2us.derbyday.kakao.freefull.google.global.android.common'
string(200) Y
did Hive SDKが使用するデバイスID bigint Y
level ゲーム内のユーザーレベル (多くのキャラクターを持つ最高レベル) int Y
client_ip クライアントIP。この値はGeoIPから国の値を抽出します string(32) Y
server_ip サーバーIP string(32) N
device_name ユーザーデバイスモデル
例: iPhone, iPad, SM-G935, LGM-G600S
string(32) Y
company ログの対象となるゲーム出版会社:
例: "C2S": Com2uS, "GVI": Com2uS Holdings
string(3) Y
server_id サーバーコード
'JSON入力コード'を入力するにはサーバーコードテーブルを参照
string Y
server_uid ゲームサーバーで使用されるユーザー識別子 bigint Y
last_login_date 昨日の最終ログイン時間
ユーザーが今日サインアップした場合、このフィールドをログイン時間として設定します
フォーマット: yyyy-mm-dd hh🇲🇲ss
例: 2017-02-28 14:33
string 必須ではありませんが、推奨されます。
country client_ipが指定されていない場合、国コードを直接入力します。
参照: 識別子ポリシー
例: KR
string(2) N
os_version OSバージョン情報。
例: 9.2.1
string(10) 必須ではありませんが、推奨されます。
game_language ゲーム内で設定されている言語。2文字の小文字。
参照: 識別子ポリシー
例: ko
varchar 必須ではありませんが、推奨されます。
is_emulator BlueStacksなどのPC用エミュレーターに接続している場合は1を返します; そうでない場合は0を返します
PC版には2を返します
int 必須ではありませんが、推奨されます。
guid ログごとに生成されるユニークキー
uuidのようなランダムフォーマットが推奨されます
varchar(64) N

ログサンプル

{
    "date": "2012-11-26 13:32:45",
    "dateTime": "2012-11-26 13:32:45",
    "category": "derbyday_login_log",
    "channel": "KAK",
    "user_id": "**174577796603776",
    "app_id": "com.com2us.derbyday.kakao.freefull.google.global.android.common",
    "client_ip": "203.236.26.252",
    "server_ip": "112.175.60.138",
    "level": 28,
    "guid": "ca4bd34c867f4617a819ae139d8d6670"
}

収集されたデータベーススキーマ(削減)

CREATE TABLE `LOGIN_LOG_20131031` (
    `log_id` BIGINT(20) NOT NULL AUTO_INCREMENT,
    `login_date` DATE NOT NULL,
    `last_login_date` DATETIME NULL,
    `app_id` VARCHAR(200) NOT NULL,
    `channel` VARCHAR(3) NOT NULL,
    `user_id` BIGINT(20) NOT NULL,
    `device_name` VARCHAR(128) NOT NULL DEFAULT 'unknown',
    `level` INT(11) NOT NULL,
    `country` CHAR(2) NULL DEFAULT NULL,
    `count` INT(11) NOT NULL,
    `add_date` DATETIME NOT NULL,
    `mod_date` DATETIME NOT NULL,
    `db_date` DATETIME NOT NULL,
    PRIMARY KEY (`log_id`),
    UNIQUE INDEX `ix_unique` (`login_date`, `app_id`, `channel`, `user_id`, `device_name`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB

スクリプトタイプ

<?php
$GLOBALS['THRIFT_ROOT'] = '/dev/scribe-php'; // This route is changable. Modify it in accordance with the development environment.
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 writeLoginLog($app_id, $channel, $user_id) // Function is an example as well. Modify it in accordance with the development environment. (Category, however, should be fixed as ‘login_log’)
{
        $msg['category'] = 'login_log';
        $msg['message'] = array();
        $msg['message']['date'] = date('Y-m-d H:i:s', time());
        $msg['message']['last_login_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']['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); // the target host to send logs(fixed port)
        $transport = new TFramedTransport($socket);
        $protocol = new TBinaryProtocol($transport, FALSE, FALSE);
        $scribe_client = new scribeClient($protocol, $protocol);

        $transport->open();
        $scribe_client->Log($messages);
        $transport->close();  
}
?>

使い方

  • サーバーにスタックされたログを毎時取得し、openQueryを実装することでリアルタイムプレイヤーの状態を提供します。
  • 新しいリリースやゲームのマーケティングを通じて、すぐにユーザー数を確認するのに役立ちます。 ](http://developers.withhive.com/wp-content/uploads/2018/05/180514-analytics-login-01-EN.png){width="650px"}
  • ログにはserver_id(サーバーを識別するID)が表示されないため、Login_logテーブルを利用します。
  • server_idはゲームによって異なりますが、通常は次のように分けられます: 1(韓国);2(日本);3(中国);4(グローバル)。