red5 で slf4j を使ってログを出力する


内容


サーバサイド側(Java)作成

1) 確認

red5 フォルダ以下に、red5-0.8.0.tar.gz を解凍したファイルがあるものとする。

2) テンプレートをコピーする

red5 フォルダの /doc/templates/ に、テンプレートとなるファイルがあるので、それを webapps フォルダにコピーして使う。
今回は、sample1 プロジェクトとする。

$ 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 は、ここ に記述されている。

ひとつひとつ 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 を置く。
jar は、red5/lib にあるので、コピーして使った。

$ 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 フォルダにあるファイルをコピーして使う。
CLASSPATH の通っているところに logback.xml を配置する。

$ 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: 9848, today: 3, yesterday: 0

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-09-24 (火) 14:55:57 (1280d)