Skip to content

TouchLinerDomainLogger

각 도메인별 세션 추적을 위한 로거 클래스입니다. 세션당 한 번만 이벤트를 로깅합니다. defaultEventName에 도메인별 이벤트 이름을 지정하여 사용합니다.

  • touch_app_liner_domain — App
  • touch_scholar_liner_domain — Scholar
  • touch_write_liner_domain — Write

Import

ts
import { TouchLinerDomainLogger } from '@liner-engineering/orbit-app/analytics';

초기화

ts
const domainLogger = new TouchLinerDomainLogger({
  logEvent: ampLogEvent,
  defaultEventName: 'touch_app_liner_domain',
});

생성자 파라미터

파라미터타입설명
logEvent(eventName: string, properties: object) => void이벤트 로깅 함수
defaultEventNamestring기본 이벤트 이름

사용 예시

tsx
import { TouchLinerDomainLogger } from '@liner-engineering/orbit-app/analytics';

const domainLogger = new TouchLinerDomainLogger({
  logEvent: ampLogEvent,
  defaultEventName: 'touch_app_liner_domain',
});

function App() {
  useLinerTouchLog({
    domainLogger,
  });

  return <YourApp />;
}

페이지별 추가 속성 (TouchLinerDomainProperties)

특정 페이지에서 domain 이벤트에 추가 속성을 포함해야 할 때 사용합니다. 추가 속성은 비동기 데이터(API 응답 등)에 의존할 수 있습니다.

Import

ts
import {
  TouchLinerDomainPropertiesProvider,
  useTouchLinerDomainProperties,
} from '@liner-engineering/orbit-app/analytics';

설정

app.tsx에서 TouchLinerDomainPropertiesProvider로 감쌉니다. useLinerTouchLog의 시그니처는 변경 없이 그대로 사용합니다.

tsx
function AppRoot() {
  return (
    <TouchLinerDomainPropertiesProvider>
      <App />
    </TouchLinerDomainPropertiesProvider>
  );
}

function App() {
  useLinerTouchLog({ gatewayLogger, landingLogger, domainLogger });
  return <Routes />;
}

특정 페이지에서 추가 속성 전달

useTouchLinerDomainProperties()가 반환하는 logDomain 함수를 호출합니다. 비동기 데이터가 준비된 시점에 호출하면 됩니다.

tsx
function SomePage() {
  const logDomain = useTouchLinerDomainProperties();
  const { data: pageInfo } = usePageInfo();

  useEffect(() => {
    if (pageInfo) {
      logDomain({ page: 'home', source: pageInfo.source });
    }
  }, [pageInfo]);

  return <div>...</div>;
}
  • TouchLinerDomainPropertiesProvider 없이도 useLinerTouchLog는 기존과 동일하게 동작합니다. Provider는 페이지별 추가 속성이 필요할 때만 감싸면 됩니다.
  • useTouchLinerDomainProperties는 반드시 TouchLinerDomainPropertiesProvider 하위에서 호출해야 합니다. Provider 없이 호출하면 에러가 발생합니다.
  • useTouchLinerDomainProperties()를 호출하는 하위 컴포넌트는 useLinerTouchLog동일한 render cycle에 동기적으로 렌더링되어야 합니다. React.lazy, 조건부 렌더링 등으로 하위 컴포넌트가 늦게 마운트되면 추가 속성이 {}로 로깅됩니다.
  • logDomain()은 Provider 마운트당 첫 호출만 유효합니다. 두 번째 이후 호출은 무시됩니다.
  • 쿠키 이름은 TOUCH_LINER_DOMAIN_SESSION이며, 브라우저 session cookie로 동작합니다.

Methods

setSessionCookie

세션 쿠키를 설정합니다 (브라우저 세션 동안 유효).

ts
domainLogger.setSessionCookie();

hasSessionCookie

세션 쿠키 존재 여부를 확인합니다.

ts
const hasSession = domainLogger.hasSessionCookie();
// true | false

removeSessionCookie

세션 쿠키를 삭제합니다.

ts
domainLogger.removeSessionCookie();

logAndSetSessionCookie

이벤트를 로깅하고 세션 쿠키를 설정합니다.

ts
// 기본 이벤트 이름 사용
domainLogger.logAndSetSessionCookie();

// 커스텀 이벤트 이름과 속성 사용
domainLogger.logAndSetSessionCookie({
  eventName: 'custom_domain_touch',
  properties: {
    page: 'home',
    source: 'direct',
  },
});

logAndSetSessionCookie 옵션

옵션타입설명
eventNamestring커스텀 이벤트 이름 (선택)
propertiesRecord<string, unknown>추가 속성 (선택)

Released under the MIT License.