Print Chaser

다운로드 26
업데이트 2026. 7. 29.

설치 매뉴얼

개요

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

참고 자료