InsertLogV2
public BackendReturnObject InsertLogV2(string logType, Param param);
기존의 InsertLog는 로그 저장 시 호출 비용과 함께 DB 쓰기 처리량이 발생하였으나,
개선된 InsertLogV2는 호출 비용만 발생하며, DB 쓰기 처리량이 발생하지 않아 DB 쓰기 요금에 대한 부담 없이 로그를 저장할 수 있습니다.
파라미터
Value | Type | Description |
---|---|---|
logType | string | 로그를 구분하기 위한 type |
param | string | 로그에 기록하고자 하는 내용을 담은 Param |
설명
- 게임 로그를 저장합니다.
- 생성된 로그는 뒤끝 콘솔에서 확인 가능합니다.
- 콘솔에 등록되기까지 최대 5분이 걸릴 수 있습니다.
- logType 값에는 -(하이픈), _(언더바), (띄어쓰기)를 제외한 특수문자의 사용이 불가능합니다.
- Param으로 등록되는 데이터의 최대 수는 100개로 제한됩니다.
- Param의 key값은 숫자 혹은 _(언더바)로 시작할 수 없습니다.
- Param의 key값에는 -(하이픈), _(언더바), (띄어쓰기)를 제외한 특수문자의 사용이 불가능합니다.
- Param의 key값에는 nickname, gamer_id, indate, unknown_fields를 대소문자 상관없이 사용할 수 없습니다.
- 콘솔에서 스키마 정의를 통해 저장할 필드를 관리할 수 있습니다.
- 보관 기간은 콘솔에서 설정할 수 있습니다.
Example
동기
Param param = new Param();
param.Add("n_n", "tableName");
Backend.GameLog.InsertLogV2("logType", param);
비동기
Param param = new Param();
param.Add("n_n", "tableName");
Backend.GameLog.InsertLogV2("logType", param, (callback) => {
// 이후 처리
});
SendQueue
Param param = new Param();
param.Add("n_n", "tableName");
SendQueue.Enqueue(Backend.GameLog.InsertLogV2, "logType", param, (callback) => {
// 이후 처리
});
ReturnCase
Success cases
로그 생성에 성공한 경우
statusCode : 204
message : Success
Error cases
param에 대소문자 상관없이 사용할 수 없는 key값이 존재할 경우
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에 기타 조건에 맞지 않는 key값이 존재할 경우
statusCode : 400
errorCode : BadParameterException
message : bad reserved word, 잘못된 reserved word 입니다
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());
}