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 に固執したいのですが、この問題を解決するためにロギング フレームワークを切り替えることを意味する場合は、喜んでそうします。