2

JBoss EAP に grails アプリケーションをデプロイしようとしていますが、stdout と stderr を除いてアプリケーションからの出力がログに記録されないという問題があります。jboss は内部ロギング システムを使用し、grails は log4j を使用するため、この場合のロギングの仕組みがよくわかりません。

これは、standalone.xml での私のロギング構成です。

    <subsystem xmlns="urn:jboss:domain:logging:1.1">
        <console-handler name="CONSOLE">
            <level name="INFO"/>
            <formatter>
                <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
            </formatter>
        </console-handler>
        <periodic-rotating-file-handler name="FILE">
            <formatter>
                <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
            </formatter>
            <file relative-to="jboss.server.log.dir" path="server.log"/>
            <suffix value=".yyyy-MM-dd"/>
            <append value="true"/>
        </periodic-rotating-file-handler>
        <logger category="com.arjuna">
            <level name="WARN"/>
        </logger>
        <logger category="org.apache.tomcat.util.modeler">
            <level name="WARN"/>
        </logger>
        <logger category="sun.rmi">
            <level name="WARN"/>
        </logger>
        <logger category="jacorb">
            <level name="WARN"/>
        </logger>
        <logger category="jacorb.config">
            <level name="ERROR"/>
        </logger>
        <root-logger>
            <level name="INFO"/>
            <handlers>
                <handler name="CONSOLE"/>
                <handler name="FILE"/>
            </handlers>
        </root-logger>
    </subsystem>

これがデフォルトです。

この log4j 構成は、私の Config.groovy にあります。

// log4j configuration
log4j = {
    // Example of changing the log pattern for the default console appender:
    //
    //appenders {
    //    console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
    //}

    error  'org.codehaus.groovy.grails.web.servlet',        // controllers
           'org.codehaus.groovy.grails.web.pages',          // GSP
           'org.codehaus.groovy.grails.web.sitemesh',       // layouts
           'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
           'org.codehaus.groovy.grails.web.mapping',        // URL mapping
           'org.codehaus.groovy.grails.commons',            // core / classloading
           'org.codehaus.groovy.grails.plugins',            // plugins
           'org.codehaus.groovy.grails.orm.hibernate',      // hibernate integration
           'org.springframework',
           'org.hibernate',
           'net.sf.ehcache.hibernate'

    all additivity: false, console: [
            'grails.app.controllers.com.redhat.theses',
            'grails.app.domain.your.com.redhat.theses',
            'grails.app.services.com.redhat.theses',
            'grails.app.taglib.com.redhat.theses',
            'grails.app.conf.com.redhat.theses',
            'grails.app.filters.com.redhat.theses'
    ]
}

私は本当にこのログの内容を理解していません。とても混乱しています。私が望むのは、少なくともすべてのエラーをログに記録することだけです。このような重要な機能はデフォルトで機能すると考える人もいるでしょう。

JBoss の起動時にこのプロパティを設定すると、次のようになります。

./standalone.sh -Dorg.jboss.as.logging.per-deployment=false

それは私が望むように正確に動作します。しかし、それは大丈夫ですか?ロギングなどの重要な機能を取得するために、なぜこのプロパティを設定する必要があるのでしょうか?

助けてくれてどうもありがとう、少し傲慢に聞こえたらごめんなさい、私は何時間もこれを理解しようとしてきましたが、私はまだ最初の場所にいます.

4

1 に答える 1

2

org.jboss.as.logging.per-deployment 環境変数、AKA ホスト プロパティ、AKA 環境プロパティは、使用するログ設定を JBoss に伝えます。これを true に設定すると、JBoss はデプロイされているアプリケーションでロギング構成を使用するように指示されます。Grails Config.groovy でそれを設定する方法がわかりません。そのホスト プロパティを false に設定した後、JBoss で設定を行います。False は、JBoss でロギング構成を使用することを意味します。

JBoss でプロパティを false に設定し、grails.app カテゴリを作成して、ファイル Handler にログを記録します。これは、Grails およびドメイン モードで実行されている EAP 6.0 で機能します。

于 2015-02-26T01:23:06.493 に答える