SigLog
Common abstract log system
JOOQ 기반의 동적 쿼리, 페이지화 된 명령어를 지원하는 추상 로그 시스템입니다. 각 요소를 확장하여 사용할 수 있습니다.
SigLogController
각 컴포넌트들의 인스턴스 생성을 진행하고 init()을 수행하는 컨트롤러이며, Api의 역할도 겸합니다.
이곳에서 의존성 주입을 진행하며 생성된 컴포넌트 들은 Setter로 설정되어야 합니다.
log(SigLogData data)를 통해 새 로그를 추가할 수 있습니다. (다른 방식으로 업데이트 할 경우 SigLogListener에 수동 업데이트 필요)
getCache(UUID) 를 통해 로그 캐시를 가져올 수 있으나, 캐시 기능을 활성화를 위해서는 SigLogListener를 먼저 등록해야 합니다.
Override 해야 하는 곳은 다음과 같습니다.
SigLogViewer<T> createViewer();
SigLogCommand
ChatPaginator를 가지고 있는 로그 조회 명령어입니다.
Override 해야 하는 곳은 다음과 같습니다.
super(label)McLocaleBundle getLocalization()List<String> getLogFormat()String getLogLineFormat()
SigLogDao
Data Access Object 입니다.
Override 해야 하는 곳은 다음과 같습니다.
String getTableName()Connection getConnection()Class<T> getDataClass()
추가 필드는 생성자 에서 다음 구문을 통해 전달되어야 합니다.
SigLogData
로그 결과 데이터를 가지고 있는 DTO 입니다.
Override 해야 하는 곳은 다음과 같습니다.
String formatLog(String)
JOOQ가 RecordMapper 로 역직렬화 가능한 타입만 존재할 수 있습니다. (다른 타입 필요 시 DSLContext에 직접 등록 필요)
SigLogViewer
동적 쿼리를 만드는 객체입니다. 명령어를 받아서 쿼리로 변환합니다.
addCommand(String, Consumer<String>)을 통해 특정 명령어를 받았을 때 어떤 동작을 실행할 지 정할 수 있습니다.
이 곳에 등록된 Command는 SigLogCommand 에서 args를 입력해 각 args 마다callCommand 를 호출할 때 :를 기준으로 나뉘어 앞의 키로 찾게 됩니다.
ex) user: qsef1256 -> command name: user value: qsef1256
위 예시에서 플레이어의 SigLogCommand의 args로 user: qsef1256를 입력할 경우 PlayerUtil.getUUIDFromPlayerName("qsef1256"))를 타고 sender(UUID)를 호출하게 됩니다.
이 곳에 등록된 Command의 name들은 getCommandTabComplete()을 통해 Tab Complete 을 만드는데도 사용됩니다.
명령어 목록은 서버 플러그인 사용법:로그를 참고하세요.
SigLogListener
Cache 시스템을 위한 Listener 입니다. SigLogController에 등록 후 사용할 수 있습니다. SigLogController를 통해 log 할 시 자동으로 업데이트 됩니다.
Last updated