menu
Is this helpful?

# Erlang

최신 버전:v2.0.0

업데이트 시간:2023-10-08

다운로드: Source Code (opens new window)

# 1. SDK 구현

# 1.1 v1.2.0 이후의 새 버전은 rebar3 환경을 도입하여 참조합니다.

1.1: 프로젝트에 rebar3 환경을 도입해 주세요.

1.2: 프로젝트 설정 파일을 변경하고, lager 라이브러리 설정을 추가해 주세요. 주로 ThinkingData SDK가 독자적으로 사용하는 sink인 ta_logger_lager_event를 추가합니다. 다른 로그 파일로의 다중 인스턴스 작성이 필요한 경우, 다른 sink도 추가해야 합니다.

[
  %% lager logging library configuration
  {lager, [
    {colored, true},
    {log_root, "./log"}, %% The storage path of the logs generated during system operation
    %% Add a separate sink for the counting SDK here, named: ta_logger_lager_event
    {extra_sinks,
      [
        {ta_logger_lager_event,
          [{handlers, [
            {lager_file_backend, [
              {file, "LOG_DIRECTORY"}, %% Configure the file path and name for data collection.
              {level, info},
              {formatter, lager_default_formatter},
              {formatter_config, [message, "\n"]},
              {size, 10485760}, %% The page size of a single file is 10Mb.
              {rotator, td_lager_rotator} %% Custom log rotation
            ]}]},
            {async_threshold, 500},
            {async_threshold_window, 50}
          ]
        }]
    }
  ]
  }
].

주의: SDK 디렉토리에는 example_sys.config라는 샘플 파일이 있습니다. 이 샘플 설정을 참고해 주세요.

LOG_DIRECTORY는 로컬에 작성되는 폴더의 주소입니다. LogBus의 모니터 폴더 주소를 여기에 설정하면, LogBus를 사용하여 데이터를 모니터링하고 업로드할 수 있습니다.

  1. rebar.config 파일을 변경하고, thinkingdata_analytics SDK에 대한 참조를 추가합니다.
{erl_opts, [debug_info, 
    %% The parameters required for using the lager library
    {parse_transform, lager_transform},
    %% Here you need to declare the extended sink. If there are multiple sinks, please write: [ta_logger, ta_logger_xxxx]
    {lager_extra_sinks, [ta_logger]}
]}.

{deps, [ 
    %% Add number collection SDK
    {thinkingdata_analytics, {git, "https://github.com/ThinkingDataAnalytics/erlang-sdk.git", {tag, "v1.3.0"}}}
]}.

{shell, [ 
    %% Enable configuration file
    {config, "config/sys.config"},
    {apps, [app_name]}
]}.

실행 명령:

rebar3 compile

1.4: 프로젝트 설정 파일 안에 시작 파라미터를 입력해 주세요.

xxxx.app.src 파일 안에서 SDK의 시작 항목을 추가합니다.

{application, your_name,
 [{description, "An OTP application"},
  {vsn, "0.1.0"},
  {registered, []},
  {mod, {your_name_app, []}},
  {applications,
   [kernel,
    stdlib,
    jsone, %% Add startup items here
    lager %% Add startup items here
   ]},
  {env,[]},
  {modules, []},

  {licenses, ["Apache-2.0"]},
  {links, []}
 ]}.

1.5 사용 방법

%% A lager sink is provided by default: 'ta_logger'. You could add your own sink
Consumer = td_log_consumer:init_with_logger(fun(E) -> ta_logger:info(E) end),
%% init SDK with consumer
TE_SDK = td_analytics:init_with_consumer(Consumer),

WARNING

Windows 플랫폼 주의 사항: 데이터 작성 시 오류가 나지 않도록 관리자 권한으로 실행해 주세요.

  1. Logbus 설치

TE 시스템을 통해 신속하고 정확한 데이터 전송을 위해, SDK와 LogBus를 함께 사용하여 서버 데이터의 데이터 리포트를 추천합니다.

# 2. 초기 설정

SDK의 초기 설정 코드 예시

%% A lager sink is provided by default: 'ta_logger'. You could add your own sink
Consumer = td_log_consumer:init_with_logger(fun(E) -> ta_logger:info(E) end),
%% init SDK with consumer
TE_SDK = td_analytics:init_with_consumer(Consumer),

# 3. 주요 기능

게스트 ID와 계정 ID를 효과적으로 연결하기 위해, 게임 내에서 게스트 ID와 계정 ID를 동시에 사용하는 경우, 이들 ID를 동시에 업로드하는 것을 추천합니다. 동시에 업로드하지 않을 경우, 유저가 중복으로 계산될 수 있습니다.

# 3.1 이벤트 전송

track을 사용하여 이벤트를 전송합니다. 사전에 데이터 트래킹 정책을 준비하고 전송하세요. 다음은 모델 코드입니다.

td_analytics:track_instance(TE_SDK, "account_id_Erlang", "distinct_logbus", "ViewProduct", #{"key_1" => "🚓🦽🦼🚲🚜🚜🦽", "key_2" => 2.2, "key_array" => ["🚌", "🏍", "😚😊"]}),
  • 이벤트 이름은 string 타입으로, 영문자와 숫자, "_"를 포함하며 최대 50자입니다.
  • Key는 해당 속성의 이름으로 string 타입이며, 영문자와 숫자, "_"를 포함하여 최대 50자입니다. TE 시스템은 일괄적으로 소문자로 통일됩니다.
  • Value는 해당 속성의 값으로, String, Number, Bloon, Time, object, array, list object를 지원합니다.

유저 속성은 이벤트 속성과 일치해야 합니다.

# 3.2 유저 속성 설정

일반적인 유저 속성에 대해서는 user_set을 사용하여 설정할 수 있으며, UserSet은 기존의 값을 덮어씁니다. 원래 해당 속성에 값이 없는 경우, 속성이 새로 생성됩니다. 다음은 코드 예시입니다.

td_analytics:user_set_instance(TE_SDK, "account_id_Erlang", "distinct_id", #{"id" => 12, "key_1" => [1,1,1,1], "key_2" => ["a", "b"], "key_3" => ["中", "文"], "key_4" => ["中文", "list"], "key_5" => "中文字符串", "amount" => 7.123}),

# 4. 코드 예시 (Example Code)

아래의 코드 예시에 모든 작업이 포함되어 있으며, 아래 순서대로 사용하는 것을 권장합니다:

%% A lager sink is provided by default: 'ta_logger'. You could add your own sink
Consumer = td_log_consumer:init_with_logger(fun(E) -> ta_logger:info(E) end),
%% init SDK with consumer
TE_SDK = td_analytics:init_with_consumer(Consumer),

%% ordinary event
td_analytics:track_instance(TE_SDK, "account_id_Erlang", "distinct_logbus", "ViewProduct", #{"key_1" => "🚓🦽🦼🚲🚜🚜🦽", "key_2" => 2.2, "key_array" => ["🚌", "🏍", "😚😊"]}),

td_analytics:close_instance(TE_SDK),