설치 매뉴얼
개요
Print Chaser 앱은 WowSoft Print Chaser의 출력 로그 테이블을 JDBC로 정기 폴링하여 출력(인쇄) 이력을 수집합니다. 원본 컬럼을 소나 로그 스키마(printchaser-print)로 매핑하고, 출력물 보안 현황 대시보드를 제공합니다.
Note
설치 매뉴얼은 1.1.2607.0 버전의 앱 기준으로 작성되었습니다. 1.0.2401.0 버전의 앱이 설치되어 있는 경우 앱을 삭제하고 최신 버전으로 설치해주세요.
Note
본 문서의 테이블명(TB_PRINT_HISTORY)과 수집 쿼리(SQL)는 모두 예시입니다. 실제 Print Chaser DB의 테이블·컬럼 구성에 맞춰 조정하세요. 단, 각 컬럼의 별칭(AS 이름)은 소나 로그 스키마 필드명과 일치해야 정상 매핑됩니다.
적용 범위
Note
소나 4.0.2312.0 이상, SQL Server(MSSQL) 환경에서 동작합니다.
요구 사항
| 항목 | 요구사항 | 비고 |
|---|---|---|
| DB 계정/권한 | TB_PRINT_HISTORY 테이블에 대한 SELECT 권한을 가진 읽기 전용 계정 | 권한 부족 시 수집 실패 |
| 발급 필요 자격증명 | SQL Server 계정·암호 | Print Chaser DB 관리자에게 요청 |
| 네트워크 허용 | TCP/1433 (소나 수집 노드 → SQL Server, Outbound) | 방화벽 정책 반영 필요 |
WowSoft Print Chaser 설정
단계 1: DB 계정·권한 준비
TB_PRINT_HISTORY 테이블에 대한 SELECT 권한을 가진 읽기 전용 계정을 준비합니다.
단계 2: 대상 테이블 확인
- 테이블:
TB_PRINT_HISTORY(출력 이력) - 증분 기준 컬럼:
LOGSEQ(bigint, 단조 증가 키) - 시간 컬럼(참고):
PRINTTIME(출력 시각),REGTIME(기록 시각)
로그프레소 수집 설정
단계 1: DB 접속 프로파일 추가
Note
SQL Server 접속에는 SQL Server JDBC 드라이버가 필요하며, 이는 소나에 **MSSQL 앱**을 먼저 설치해야 제공됩니다. Print Chaser 앱 설치 전 MSSQL 앱 설치를 선행하세요.
시스템 > 접속 프로파일 > 추가:
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 이름 | 접속 프로파일을 식별할 고유한 이름 |
| 필수 | 식별자 | 로그프레소 쿼리 등에서 사용할 접속 프로파일의 고유 식별자 |
| 필수 | 유형 | 데이터베이스 선택 |
| 필수 | 데이터베이스 유형 | 사용자 정의 |
| 필수 | 접속 문자열 | jdbc:sqlserver://HOSTNAME:1433;DatabaseName=DBNAME |
| 필수 | 계정 | 사전 준비한 읽기 전용 계정 |
| 필수 | 암호 | 계정 암호 |
| 선택 | 읽기 전용 | 체크 |
단계 2: 수집기 추가
수집 > 수집기 > 추가 에서 아래 값을 입력합니다.
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 이름 | 수집기를 식별할 고유한 이름 |
| 필수 | 주기 | 60 (초, DB 부하 고려해 60초 이상 권장) |
| 필수 | 적재 위치/수집 위치 | 로그프레소 플랫폼 구성에 따라 적합한 노드 선택 |
| 필수 | 수집 모델 | Print Chaser |
| 필수 | JDBC 프로파일 | 단계 1의 프로파일 |
| 필수 | SQL | 아래 "권장 수집 쿼리" 참조 |
| 필수 | 조건절 | WHERE LOGSEQ > ? |
| 필수 | 첫번째 기준 열 | log_seq |
| 선택 | 첫번째 기준 열 초기 값 | 최초 수집을 시작할 LOGSEQ 값 (미지정 시 전체) |
권장 수집 쿼리
SELECT TOP (1000)
LOGSEQ AS log_seq,
DOCUNAME AS file_name,
PRINTTIME AS event_time,
PAGECOUNT AS pages,
PRINTERNAME AS printer,
COMMNAME AS hostname,
CLIENTIP AS host_ip,
USER_ID AS [user],
CLIENTACCOUNT AS nt_user,
WORKGROUPNAME AS nt_domain,
REGTIME AS insert_time,
TRIM(PROFILE_TYPE) AS profile_type,
LOGUNIQUEID AS log_uuid,
CAST(CASE WHEN INSERT_WATERMARK = 1 THEN 1 ELSE 0 END AS bit) AS use_watermark,
CAST(CASE WHEN SEND_IMAGE = 1 THEN 1 ELSE 0 END AS bit) AS use_image_log,
COPIES AS copies,
CAST(CASE WHEN COLORMODE = 1 THEN 1 ELSE 0 END AS bit) AS use_color,
PAPERSIZE_W AS paper_width,
PAPERSIZE_H AS paper_height,
CAST(CASE WHEN NUP = 1 THEN 1 ELSE 0 END AS bit) AS use_poster_mode,
CAST(CASE WHEN DUPLEX = 1 THEN 0
WHEN DUPLEX = 2 THEN 1
END AS bit) AS use_both_sides,
PRINTERDISPLAYNAME AS printer_name,
PRINTPORT AS printer_port,
GROUPCODE AS dept_code,
EXENAME AS image,
PRINTERADDRESS AS printer_ip,
PCD_RULE_ID AS signature,
CASE
WHEN PCD_RESP_TYPE IS NULL THEN NULL
ELSE COALESCE(NULLIF(STUFF(CONCAT(
CASE WHEN PCD_RESP_TYPE & 1 <> 0 THEN CHAR(13)+CHAR(10)+N'로그 생성' ELSE '' END,
CASE WHEN PCD_RESP_TYPE & 8 <> 0 THEN CHAR(13)+CHAR(10)+N'텍스트 로그 생성' ELSE '' END,
CASE WHEN PCD_RESP_TYPE & 16 <> 0 THEN CHAR(13)+CHAR(10)+N'이미지 로그 생성' ELSE '' END,
CASE WHEN PCD_RESP_TYPE & 32 <> 0 THEN CHAR(13)+CHAR(10)+N'패턴 마스킹' ELSE '' END,
CASE WHEN PCD_RESP_TYPE & 64 <> 0 THEN CHAR(13)+CHAR(10)+N'승인자 출력' ELSE '' END,
CASE WHEN PCD_RESP_TYPE & 256 <> 0 THEN CHAR(13)+CHAR(10)+N'패턴 밑줄 표시' ELSE '' END,
CASE WHEN PCD_RESP_TYPE & 512 <> 0 THEN CHAR(13)+CHAR(10)+N'워터마크 삽입' ELSE '' END
), 1, 2, ''), ''), N'없음')
END AS action,
PCD_TOTAL_COUNT AS detect_count,
CASE LoginStatus
WHEN 0 THEN N'로그아웃'
WHEN 1 THEN N'온라인'
WHEN 2 THEN N'연결중'
WHEN 3 THEN N'네트워크 단절'
END AS login_status,
CAST(CASE WHEN UseOfflinekey = 1 THEN 1 ELSE 0 END AS bit) AS use_offline_key,
CASE WHEN CausePrintBlock = 1 THEN N'정책 파일 오류' ELSE NULL END AS reason
FROM dbo.TB_PRINT_HISTORY
$where
ORDER BY LOGSEQ ASC