*red5 で slf4j を使ってログを出力する [#n1683587]
#contents2_1(compact=true,depth=1-2)


&br;
*内容 [#p0849f85]
-&color(red){Java は殆どやったことないので間違ってるかもしれません。ごめんなさい。};
-java 側でログの出力をする。
-ログの出力は、Log4j ではなく slf4j を使う。
-ここ http://trac.red5.org/wiki/Documentation/Tutorials/LoggingSetup を参考にしました。

&br;
*サーバサイド側(Java)作成 [#g317478e]

**1) 確認 [#ne14a205]
red5 フォルダ以下に、red5-0.8.0.tar.gz を解凍したファイルがあるものとする。

**2) テンプレートをコピーする [#l4e43a52]
red5 フォルダの /doc/templates/ に、テンプレートとなるファイルがあるので、それを webapps フォルダにコピーして使う。&br;
今回は、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) フォルダの作成 [#t6961db9]
 $ 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) プログラム [#kf28cabe]
 $ 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


#geshi(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) コンパイルするための準備 [#q218ff0d]
ここは適当にお願いします。&br;
&br;
ちなみに、ログを出力するのに必要な jar は、[[ここ:http://trac.red5.org/wiki/Documentation/Tutorials/LoggingSetup]] に記述されている。&br;

 
***ひとつひとつ jar を指定する場合 [#f5419682]
 $ 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

***まとめて指定する場合 [#b9e0301a]

 $ cd red5/webapps/sample1/WEB-INF/
 $ vim compile.sh

 javac -classpath .:..:/lib -d ./classes src/org/red5/server/webapp/sample1/Application.java

lib フォルダを作成し、必要な jar を置く。&br;
jar は、red5/lib にあるので、コピーして使った。&br;


 $ 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) コンパイルする [#v3d6e1e6]
javac すると、classes フォルダ以下に、Application.class ファイルが作成される。

 $ chmod 755 compile.sh
 $ ./compile.sh


**6) ログの設定ファイル作成 [#o5ab60fb]

***設定ファイル(logback.xml)の作成 [#ieaf9310]
conf フォルダにあるファイルをコピーして使う。&br;
CLASSPATH の通っているところに logback.xml を配置する。&br;
 $ cd red5/
 $ cp conf/logback.xml webapps/sample1/WEB-INF/classes/logback-sample1.xml

#geshi(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)の修正 [#ed5d58b4]

#geshi(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)の修正 [#ba1b58d2]
-参照:[[Flash/red5/HelloWorld#pbe992ae]]

**9) 設定ファイル(red5-web.properties)の修正 [#x4cb7850]
-参照:[[Flash/red5/HelloWorld#nd185db2]]

&br;
*参考URL [#k3d30b46]
-[[http://logback.qos.ch/manual/appenders.html]]
-[[http://logback.qos.ch/manual/layouts.html]]
-[[http://tech.kayac.com/?tag=red5]]
-http://logback.qos.ch/manual/appenders.html
-http://logback.qos.ch/manual/layouts.html


&br;
*Comment [#q9fd0e48]
#comment_nospam
&br;
#counter

IP:219.111.184.26 TIME:"2009-10-13 (火) 23:05:38" REFERER:"http://wiki.minaco.net/index.php?cmd=edit&amp;page=Flash%2Fred5%2F%E3%83%AD%E3%82%B0%E5%87%BA%E5%8A%9B" USER_AGENT:"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ja-JP-mac; rv:1.9.0.14) Gecko/2009082706 Firefox/3.0.14 GTB5"

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS