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>

并且嵌入式 glassfish 插件在 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