본문으로 건너뛰기
버전: 5.16.0

InsertLogV2

public BackendReturnObject InsertLogV2(string logType, Param param);
public BackendReturnObject InsertLogV2(string logType, Param param, int expirationDays);

파라미터

ValueTypeDescription
logTypestring로그를 구분하기 위한 type
paramstring로그에 기록하고자 하는 내용을 담은 Param
expirationDaysint삭제 예정 날짜(expirationDays가 10일 경우, 10일 뒤 자동 삭제, 기본은 90일)

설명

  • 게임 로그를 저장합니다.
  • 생성된 로그는 뒤끝 콘솔에서 확인 가능합니다.
  • 콘솔에 등록되기까지 최대 5분이 걸릴 수 있습니다.
  • Param으로 등록되는 데이터의 최대 수는 100개로 제한됩니다.
  • Param의 key값에는 -(하이픈), _(언더바), (띄어쓰기)를 제외한 특수문자의 사용이 불가능합니다.
  • Param의 key값에는 nickname, gamer_id, indate를 사용할 수 없습니다.
Param key값 설정 유의사항

Param의 key값은 로그 행동유형별로 고정된 값의 사용을 권장합니다.

  • 가장 마지막 저장된 로그와 다른 key값으로 저장을 시도하는 경우, 새로운 스키마 유형에 대한 저장이 이루어지며 응답시간이 길어질 수 있습니다.
  • 가장 마지막 저장된 로그의 key값에 대해서만 csv 다운로드가 제공되어, 다른 key값으로 저장된 데이터는 csv 다운로드 시 확인할 수 없습니다.

expirationDays

expirationDays는 유예 기간입니다.(기존 InsertLog의 graceDays와 동일합니다.) expirationDays를 10으로 입력할 경우, 삽입 시간으로부터 10일후에 로그가 자동으로 삭제됩니다.
expirationDays를 0 이하로 입력하거나 입력하지 않을 경우 90(3개월)으로 지정됩니다.

만료기간 설정 안내

로그의 만료기간은 각 로그타입 별 최초에 삽입했던 게임 로그의 만료기간으로 고정되며 수정이 불가능합니다.

예를 들어 특정 행동유형에 첫 로그로 InsertLogV2(param, 7);를 설정하여 저장을 1회라도 진행하였다면 이후 저장하는 모든 로그는 param 입력값과 관계없이 만료기간이 7일로 고정됩니다.

Example

동기

Param param = new Param();
param.Add("n_n", "tableName");
Backend.GameLog.InsertLogV2("logType", param);

//로그 보관 기간을 최대 10일로 지정하고 싶을 경우
Backend.GameLog.InsertLogV2("logType", param, 10);

비동기

Param param = new Param();
param.Add("n_n", "tableName");
Backend.GameLog.InsertLogV2("logType", param, (callback) => {
// 이후 처리
});

//로그 보관 기간을 최대 10일로 지정하고 싶을 경우
Backend.GameLog.InsertLogV2("logType", param, 10, (callback) => {
// 이후 처리
});

SendQueue

Param param = new Param();
param.Add("n_n", "tableName");
SendQueue.Enqueue(Backend.GameLog.InsertLogV2, "logType", param, (callback) => {
// 이후 처리
});

//로그 보관 기간을 최대 10일로 지정하고 싶을 경우
SendQueue.Enqueue(Backend.GameLog.InsertLogV2, "logType", param, 10, (callback) => {
// 이후 처리
});

ReturnCase

Success cases

로그 생성에 성공한 경우
statusCode : 204
message : Success

Error cases

param에 key값으로 gamer_id, nickname, inDate가 존재할 경우
statusCode : 405
errorCode : MethodNotAllowedParameterException
message : MethodNotAllowed {key}, 이용할 수 없는 {key}입니다

param에 _ 혹은 숫자로 시작되는 key값이 존재할 경우
statusCode : 405
errorCode : MethodNotAllowedParameterException
message : MethodNotAllowed {key}, 이용할 수 없는 {key}입니다

param에 대소문자 상관없이 일치되는 key값이 존재할 경우
statusCode : 405
errorCode : MethodNotAllowedParameterException
message : MethodNotAllowed {중복된key대문자}, 이용할 수 없는 {중복된key대문자}입니다

param에 Add된 데이터가 100개 초과일 경우
statusCode : 428
errorCode : Precondition Required
message : Precondition Required Allowed the maximum length of key is 100

Sample Code

public void InsertLogV2Test() {
long money = 12345678;
int level = 100;
double hp = 123;
Dictionary<string, int> items = new Dictionary<string, int> { { "hpPotion", 12 }, { "mpPotion", 20 }, { "cook", 1 }, { "bomb", 20 } };
List<string> equip = new List<string>() { "hat12", "hat10", "shoes1", "costume20" };

Param param = new Param();
param.Add("money", money);
param.Add("level", level);
param.Add("hp", hp);

Param param2 = new Param();
param2.Add("items", items);
param2.Add("equip", equip);

var bro1 = Backend.GameData.Update("stats", new Where(), param);
var bro2 = Backend.GameData.Update("items", new Where(), param2);

// 에러 수집용 log
Param logParam = new Param();

if(!bro1.IsSuccess()) {
logParam.Add("statsUpdateError", bro1.ToString());
}
if(!bro2.IsSuccess()) {
logParam.Add("itemsUpdateError", bro2.ToString());
}

logParam.Add("statsParam", param);
logParam.Add("itemsParam", param2);

var logBro = Backend.GameLog.InsertLogV2("updateLog", logParam);
Debug.Log(logBro.ToString());
}