logger
logger는 HandStack 모듈들이 전송한 거래 로그와 이벤트 로그를 저장하고 조회하는 모듈입니다. SQLite를 기본으로 사용할 수 있으며, 설정에 따라 애플리케이션별 로그 저장소와 테이블을 분리합니다.
책임 범위
/logger/api/log/insert요청이나 내부 이벤트를 받아 로그를 저장합니다.- 애플리케이션별
DataSource설정으로 저장소, 테이블, 보관 기간을 결정합니다. - 로그 목록과 상세 조회 API를 제공합니다.
LogDeleteService백그라운드 작업으로 보관 기간이 지난 로그를 삭제합니다.- 동적 schema 설정이 있으면 컬럼 정의와 역할 매핑으로 DDL과 insert/list/detail 쿼리를 구성합니다.
주요 API
| 메서드 | 경로 | 용도 |
|---|---|---|
GET/POST | /logger/api/log/insert | 로그 이벤트를 저장합니다. |
GET | /logger/api/log/list | 저장된 로그 목록을 조회합니다. |
GET | /logger/api/log/detail | 로그 상세 정보를 조회합니다. |
핵심 구현
Areas/logger/Controllers/LogController.cs: 로그 저장/조회 API 진입점입니다.Events/LoggerRequestHandler.cs: 모듈 내부 이벤트 기반 로그 저장 요청을 처리합니다.Services/LogDeleteService.cs: 보관 기간 기준 삭제 백그라운드 서비스입니다.SQL: provider별 기본 DDL과 쿼리 리소스입니다.Entity/DataSource.cs: 로그 저장소와 동적 schema 설정 타입입니다.
주요 설정
| 설정 | 설명 |
|---|---|
IsSQLiteCreateOnNotSettingRequest | 설정되지 않은 애플리케이션 로그 요청을 받을 때 SQLite 저장소를 자동 생성할지 결정합니다. |
LogDeleteRepeatSecond | 로그 삭제 백그라운드 작업 반복 주기입니다. |
DataSource | 애플리케이션별 저장소, provider, 테이블, 보관 기간 설정입니다. |
DataSource.Schema | 동적 schema를 사용할 때 컬럼과 역할 매핑을 정의합니다. |
BusinessServerUrl | 내부 거래 실행 URL입니다. |
DataSource 예시는 다음과 같습니다.
{
"ApplicationID": "HDS",
"TableName": "TransactLog",
"DataProvider": "SQLite",
"RemovePeriod": -30,
"ConnectionString": "URI=file:../sqlite/HDS/logger/transact.db;Journal Mode=Off;BinaryGUID=False;DateTimeFormat=Ticks;Version=3;",
"IsEncryption": "N"
}