red5 で slf4j を使ってログを出力する †内容 †
サーバサイド側(Java)作成 †1) 確認 †red5 フォルダ以下に、red5-0.8.0.tar.gz を解凍したファイルがあるものとする。 2) テンプレートをコピーする †red5 フォルダの /doc/templates/ に、テンプレートとなるファイルがあるので、それを webapps フォルダにコピーして使う。 $ cd red5 $ cp -R /doc/templates/myapp /webapps/ $ mv myapp sample1 ちなみに、この段階で、sample1 フォルダは以下のようになっている。 sample1/ `-- WEB-INF |-- log4j.properties |-- red5-web.properties |-- red5-web.xml `-- web.xml 2) フォルダの作成 †$ cd red5/webapps/sample1/ $ mkdir stream $ cd red5/webapps/sample1/WEB-INF/ $ mkdir src $ mkdir classes この段階で、sample1 フォルダは以下のようになっている。 sample1/ |-- stream/ `-- WEB-INF |-- classes/ |-- src/ |-- log4j.properties |-- red5-web.properties |-- red5-web.xml `-- web.xml ちなみに、最終的にはこんな感じになる。 sample1/ |-- stream/ `-- WEB-INF |-- classes | |-- logback-sample1.xml | `-- org | `-- red5 | `-- server | `-- webapp | `-- sample1 | `-- Application.class |-- src | `-- org | `-- red5 | `-- server | `-- webapp | `-- sample1 | `-- Application.java |-- lib/ | |-- jcl-over-slf4j-1.5.6.jar | |-- log4j-over-slf4j-1.5.6.jar | |-- logback-classic-0.9.14.jar | |-- logback-core-0.9.14.jar | |-- red5.jar | |-- slf4j-api-1.5.6.jar | `-- spring-core-2.5.6.jar |-- red5-web.properties |-- red5-web.xml `-- web.xml 3) プログラム †$ cd red5/webapps/sample1/WEB-INF/src $ mkdir -p org/red5/server/webapp/sample1 $ cd red5/webapps/sample1/WEB-INF/src/org/red5/server/webapp/sample1 $ vim Application.java package org.red5.server.webapp.sample1; import org.red5.server.adapter.ApplicationAdapter; import org.red5.server.api.IConnection; import org.red5.server.api.IScope; import org.red5.server.api.IServer; import org.slf4j.Logger; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Marker; import org.slf4j.MarkerFactory; public class Application extends ApplicationAdapter { private static Logger log = Red5LoggerFactory.getLogger(Application.class, "sample1"); private static Marker _marker = MarkerFactory.getMarker(Application.class.getName()); private IScope appScope; // アプリケーション起動 public boolean appStart(IScope app) { log.debug("Application Started"); log.info("Application Started"); log.warn("Application Started"); log.error("Application Started"); String username = "hoge"; log.debug(_marker, "username = {}", username); this.appScope = app; return super.appStart(app); } // アプリケーションの停止 public void appStop(IScope app) { log.debug("Application Stopped"); super.appStop(app); } // クライアント接続 public boolean appConnect(IConnection con, Object[] params) { log.debug("Application Connect"); return super.appConnect(con, params); } // クライアント切断 public void appDisconnect(IConnection con) { log.debug("Application DisConnect"); super.appDisconnect(con); } } 4) コンパイルするための準備 †ここは適当にお願いします。 ひとつひとつ jar を指定する場合 †$ cd red5/webapps/sample1/WEB-INF/ $ vim compile.sh RED5=red5 RED5_LIB=red5/lib javac -classpath .:"$RED5/red5.jar":"$RED5_LIB/log4j-over-slf4j-1.5.6.jar":"$RED5_LIB/logback-classic-0.9.14.jar":"$RED5_LIB/logback-core-0.9.14.jar":"$RED5_LIB/slf4j-api-1.5.6.jar":"$RED5_LIB/spring-core-2.5.6.jar" -d ./classes ./src/org/red5/server/webapp/sample1/Application.java まとめて指定する場合 †$ cd red5/webapps/sample1/WEB-INF/ $ vim compile.sh javac -classpath .:..:/lib -d ./classes src/org/red5/server/webapp/sample1/Application.java lib フォルダを作成し、必要な jar を置く。 $ cd red5/webapps/sample1/WEB-INF/ $ mkdir lib こんな感じ。 sample1/ |-- stream/ `-- WEB-INF |-- classes/ |-- src/ |-- lib/ | |-- jcl-over-slf4j-1.5.6.jar | |-- log4j-over-slf4j-1.5.6.jar | |-- logback-classic-0.9.14.jar | |-- logback-core-0.9.14.jar | |-- red5.jar | |-- slf4j-api-1.5.6.jar | `-- spring-core-2.5.6.jar |-- log4j.properties |-- red5-web.properties |-- red5-web.xml `-- web.xml 5) コンパイルする †javac すると、classes フォルダ以下に、Application.class ファイルが作成される。 $ chmod 755 compile.sh $ ./compile.sh 6) ログの設定ファイル作成 †設定ファイル(logback.xml)の作成 †conf フォルダにあるファイルをコピーして使う。 $ cd red5/ $ cp conf/logback.xml webapps/sample1/WEB-INF/classes/logback-sample1.xml <?xml version="1.0" encoding="UTF-8"?> <!-- <configuration debug="true"> --> <configuration> <contextName>sample1</contextName> <jmxConfigurator contextName="sample1" /> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <Encoding>UTF-8</Encoding> <File>/path/log/sample1.log</File> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS z,JST} %-5level [%thread] %logger - %msg%n</Pattern> </layout> </appender> <root> <level value="DEBUG" /> <appender-ref ref="FILE" /> </root> </configuration> 7) 設定ファイル(web.xml)の修正 †<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>Sample1 Application</display-name> <context-param> <param-name>globalScope</param-name> <param-value>default</param-value> </context-param> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/red5-*.xml</param-value> </context-param> <context-param> <param-name>locatorFactorySelector</param-name> <param-value>red5.xml</param-value> </context-param> <context-param> <param-name>parentContextKey</param-name> <param-value>default.context</param-value> </context-param> <context-param> <param-name>webAppRootKey</param-name> <param-value>/sample1</param-value> </context-param> <listener> <listener-class>org.red5.logging.ContextLoggingListener</listener-class> </listener> <filter> <filter-name>LoggerContextFilter</filter-name> <filter-class>org.red5.logging.LoggerContextFilter</filter-class> </filter> <filter-mapping> <filter-name>LoggerContextFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <security-constraint> <web-resource-collection> <web-resource-name>Forbidden</web-resource-name> <url-pattern>/streams/*</url-pattern> </web-resource-collection> <auth-constraint/> </security-constraint> </web-app> 8) 設定ファイル(red5-web.xml)の修正 †9) 設定ファイル(red5-web.properties)の修正 †参考URL †Comment †
Counter: 13336,
today: 1,
yesterday: 0
|