2

Maven と Embedded Glassfish 4 を使用して、デプロイされたアプリケーションのロギングを正しく構成するのに問題があります。サーバーには、INFO に設定されているが DEBUG に設定されていないログ メッセージが表示されます。私が持っているロギング構成は、スタンドアロンの Glassfish 4 に展開すると正常に動作しますが、組み込みバージョンでは動作しない理由がわかりません。

pom.xml には、アプリの次の依存関係があります。

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.0.13</version>
        </dependency>                
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>2.0.7</version>
        </dependency>

埋め込まれたグラスフィッシュ プラグインは、pom.xml で次のように構成されます。

           <plugin>
            <groupId>org.glassfish.embedded</groupId>
            <artifactId>maven-embedded-glassfish-plugin</artifactId>
            <version>4.0</version>
            <configuration>
                <goalPrefix>embedded-glassfish</goalPrefix>
                <name>ia</name>
                <app>target/${project.artifactId}-${project.version}</app>
                <autoDelete>true</autoDelete>
                <configFile>glassfish/domain.xml</configFile>
            </configuration>
            <executions>
                <!-- Start embedded GlassFish -->
                <execution>
                    <id>start</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>start</goal>
                    </goals>
                </execution>
                <execution>
                    <id>deploy</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>deploy</goal>
                    </goals>
                </execution>
                <execution>
                    <id>stop</id>
                    <phase>post-integration-test</phase>
                    <goals>
                        <goal>undeploy</goal>
                        <goal>stop</goal>
                    </goals>
                </execution>
                <!-- Run some admin commands -->
                <execution>
                    <id>admin</id>
                    <phase>install</phase>
                    <goals>
                        <goal>admin</goal>
                    </goals>
                    <configuration>
                        <commands>
                            <param>list-applications</param>
                        </commands>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.glassfish.main.extras</groupId>
                    <artifactId>glassfish-embedded-all</artifactId>
                    <version>4.0</version>
                </dependency>
                <dependency>
                    <groupId>com.oracle</groupId>
                    <artifactId>ojdbc6</artifactId>
                    <version>${ojdbc6.version}</version>
                    <type>jar</type>
                </dependency>
            </dependencies>
        </plugin>

注 - Glassfish のスタンドアロン インスタンスを使用して作成された domain.xml を使用して、事前に構成されたさまざまなリソースを提供しました。

私の logback.groovy 設定ファイルは次のようになります。

def appenderList = ["ROLLING"]
def WEBAPP_DIR = "."
def APPENDER_PATTERN = "%d{yyyy-MM-dd HH:mm:ss.SSS}:%5p:%c{1}:%M:%L: %m%n";
def consoleAppender = true;

println "Hostname is ${hostname}"
// does hostname match PROD?
if (hostname =~ /PROD/) { // TODO: replace this with actual produtcion server host URL pattern
  WEBAPP_DIR = "/opt/myapp" // TODO: replace with actual web app directory
  consoleAppender = false
} else {
  appenderList.add("CONSOLE")
  logger("uk.co.myapp", DEBUG, ["CONSOLE"])
}

if (consoleAppender) {
    appender("CONSOLE", ConsoleAppender) {
      encoder(PatternLayoutEncoder) {
        pattern = "${APPENDER_PATTERN}"
      }
    }
}

appender("ROLLING", RollingFileAppender) {
  file = "${WEBAPP_DIR}/log/ia-log.log"
  encoder(PatternLayoutEncoder) {
    pattern = "${APPENDER_PATTERN}"
  }
  rollingPolicy(TimeBasedRollingPolicy) {
    fileNamePattern = "${WEBAPP_DIR}/log/ia-log-%d{yyyy-MM}.zip"
  }
}

root(INFO, appenderList)

Glassfish サーバーの logging.properties を変更する方法を考え出しましたが、これまでのところ、これらの設定への変更は、デプロイされたアプリケーションに影響を与えず、気にしないサーバー関連のログ メッセージを大量に吐き出すだけです。 .

誰かがこの同じ問題を経験し、適切に構成する方法を見つけたことを願っています。

できれば logback に固執したいのですが、この問題を解決するためにロギング フレームワークを切り替えることを意味する場合は、喜んでそうします。

4

0 に答える 0