Wowza 로그 기록은 logs 폴더에 일별로 기록되어 지지만, mysql이나 postgresql로 관리할 수도 있다.
mysql로 관리한다고 할 때 설정 사항은 아래와 같다.
1. mysql-connector-java-5.1.13-bin.jar 파일을 [wowza-dir/lib] 디렉토리에 넣은 후 파일 권한은 775로 설정.
2. mysql에 log를 위한 테이블 생성.
CREATE TABLE `tbWowzaLog` (
`nLogNum` int(11) unsigned NOT NULL AUTO_INCREMENT,
`dDate` varchar(100) DEFAULT NULL,
`dTime` varchar(100) DEFAULT NULL,
`chEvent` varchar(20) DEFAULT NULL,
`chCategory` varchar(20) DEFAULT NULL,
`chComment` varchar(255) DEFAULT NULL,
`nDuration` varchar(100) DEFAULT NULL,
`chUri` varchar(255) DEFAULT NULL,
`chIP` varchar(100) DEFAULT NULL,
`chProtocol` varchar(100) DEFAULT NULL,
`chReferrer` varchar(255) DEFAULT NULL,
`chAgent` varchar(100) DEFAULT NULL,
`chApplication` varchar(100) DEFAULT NULL,
`chFile` varchar(100) DEFAULT NULL,
`chLogID` varchar(100) DEFAULT NULL,
`chExt` varchar(100) DEFAULT NULL,
`chFileSize` varchar(100) DEFAULT NULL,
`chFileLength` varchar(100) DEFAULT NULL,
PRIMARY KEY (`nLogNum`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Wowza 로그의 기본 항목들은 이보다 더 많지만, 최소한 필요한 것만 추려서 정리한 것이다.
위의 필드 중 붉은 색 "chLogID"는 일종의 custom 값으로 회원 ID등을 필요에 따라 넣기 위한 것이다.
예를 들어, 회원별로 스트리밍한 로그 기록을 갖고자 할 때
netstream.play("example.flv?userId=123")
과 같이 파일명 뒤에 "?userid=123"을 덧붙여 사용하면 된다.
주의할 것은 위의 형식으로 하게 되면 DB에는 "userid=123"으로 입력된다. 따라서 사용자의 ID만 입력 받고자 할 경우엔
netstream.play("example.flv?123")
으로 사용하면 된다.
3. log4j.properties 수정
# vi /usr/local/WowzaMediaServer/conf/log4j.properties
# 1번째 라인에 아래와 같이 "SQ" 항목을 추가
log4j.rootCategory=INFO, stdout, serverAccess, serverError, SQ
# 적당한 곳에 아래의 DB 입력 설정을 추가.
# SQ appender
log4j.appender.SQ=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.SQ.Driver=com.mysql.jdbc.Driver
log4j.appender.SQ.URL=jdbc:mysql://localhost:3306/DB명
log4j.appender.SQ.user=DB 사용자 계정
log4j.appender.SQ.password=DB 비밀번호
log4j.appender.SQ.layout=com.wowza.wms.logging.ECLFPatternLayout
log4j.appender.SQ.layout.OutputHeader=false
log4j.appender.SQ.sql=INSERT INTO tbWowzaLog
(dDate, dTime, chEvent, chCategory, chComment,nDuration,chUri,chIP,chProtocol,chReferrer,chAgent,
chApplication, chFile,chLogID,chExt,chFileSize,chFileLength) VALUES ('%X{date}', '%X{time}', '%X{x-event}', '%X{x-category}', '%X{x-comment}', '%X{x-duration}', '%X{s-uri}', '%X{c-ip}', '%X{c-proto}', '%X{c-referrer}', '%X{c-user-agent}', '%X{x-app}', '%X{x-sname}', '%X{x-sname-query}', '%X{x-file-ext}', '%X{x-file-size}', '%X{x-file-length}');
postgresql 일 경우엔 위의 # SQ appender 항목에서 DB 접속 설정은 아래와 같다.
# SQ appender
log4j.appender.SQ=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.SQ.Driver=org.postgresql.Driver
log4j.appender.SQ.URL=jdbc:postgresql://localhost:5432/DB명
log4j.appender.SQ.user=DB 사용자 계정
log4j.appender.SQ.password=DB 비밀번호log4j.appender.SQ.layout=com.wowza.wms.logging.ECLFPatternLayout
log4j.appender.SQ.layout.OutputHeader=false
log4j.appender.SQ.sql=INSERT INTO tbWowzaLog
(dDate, dTime, chEvent, chCategory, chComment,nDuration,chUri,chIP,chProtocol,chReferrer,chAgent,
chApplication, chFile,chLogID,chExt,chFileSize,chFileLength) VALUES ('%X{date}', '%X{time}', '%X{x-event}', '%X{x-category}', '%X{x-comment}', '%X{x-duration}', '%X{s-uri}', '%X{c-ip}', '%X{c-proto}', '%X{c-referrer}', '%X{c-user-agent}', '%X{x-app}', '%X{x-sname}', '%X{x-sname-query}', '%X{x-file-ext}', '%X{x-file-size}', '%X{x-file-length}');
4. Wowza 재실행
# service WowzaMediaServer restart
128