2010-03-03 44 views
18

Tôi đang chạy một ứng dụng web java đơn giản mvn jetty:run, bằng cách sử dụng plugin jetty mới nhất, nhưng dường như tôi không thể tìm ra cách để yêu cầu jetty gửi thông báo DEBUG tới bàn điều khiển (cho trường hợp jetty được nhúng, không phải chính plugin đó). Hiện tại, nó chỉ xuất hiện các tin nhắn WARN và INFO. Tôi đã thử đặt -DDEBUG-DVERBOSE, nhưng chúng không làm gì cả. Tôi đã có một cái nhìn tại các documentation, nhưng nó dường như không bao gồm này.Bật tính năng ghi nhật ký lỗi trong plugin maven jetty 7

Trả lời

18

Cập nhật: OK, cuối cùng tôi đã làm việc và đây là những gì tôi đã làm.

Sự hiểu biết của tôi là Jetty 7 không có bất kỳ phụ thuộc nào trên một khung đăng nhập cụ thể, ngay cả đối với công cụ JSP vì Jetty 7 sử dụng công cụ JSP 2.1. Vì vậy, bạn có thể sử dụng bất kỳ khung đăng nhập nào. Ở đây tôi sẽ sử dụng logback.

Đầu tiên thêm logback-classic như sự phụ thuộc vào các plugin và thiết lập thuộc tính logback.configurationFile hệ thống chỉ trên một tập tin cấu hình:

<project> 
    ... 
    <build> 
    ... 
    <plugins> 
     <plugin> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>jetty-maven-plugin</artifactId> 
     <version>7.0.0.pre5</version> 
     <configuration> 
      <systemProperties> 
      <systemProperty> 
       <name>logback.configurationFile</name> 
       <value>./src/etc/logback.xml</value> 
      </systemProperty> 
      </systemProperties> 
     </configuration> 
     <dependencies> 
      <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>0.9.15</version> 
      </dependency> 
     </dependencies> 
     </plugin> 
     ... 
    </plugins> 
    </build> 
    ... 
</project> 

Sau đó, thêm một tập tin cấu hình src/etc/logback.xml.Dưới đây là một cấu hình tối thiểu:

<configuration> 
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <layout class="ch.qos.logback.classic.PatternLayout"> 
     <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern> 
    </layout> 
    </appender> 

    <root level="debug"> 
    <appender-ref ref="STDOUT"/> 
    </root> 
</configuration> 

Với thiết lập này, cầu cảng sẽ thông điệp đầu ra DEBUG:

 
$ mvn jetty:run 
... 
00:31:33.089 [main] DEBUG org.mortbay.log - starting [email protected] 
00:31:33.089 [main] DEBUG org.mortbay.log - started [email protected] 
00:31:33.105 [main] DEBUG org.mortbay.log - starting [email protected] 
00:31:33.106 [main] DEBUG org.mortbay.log - started [email protected] 
00:31:33.106 [main] DEBUG org.mortbay.log - starting [email protected] 
00:31:33.106 [main] DEBUG org.mortbay.log - started [email protected] 
00:31:33.106 [main] DEBUG org.mortbay.log - starting [email protected] 
00:31:33.174 [main] DEBUG org.mortbay.log - started [email protected] 
00:31:33.216 [main] INFO org.mortbay.log - Started [email protected]:8080 
00:31:33.217 [main] DEBUG org.mortbay.log - started [email protected]:8080 
00:31:33.217 [main] DEBUG org.mortbay.log - started [email protected] 
[INFO] Started Jetty Server 

Resources:

+0

Cảm ơn, Pascal. Tôi chỉ thấy phiên bản đầu tiên của câu trả lời của bạn vì vậy đã cho tôi một thời gian để chấp nhận nó. Tôi không nhớ những gì tôi muốn làm điều này, nhưng tôi chắc chắn sẽ nhắc lại điều này nếu nó lại xuất hiện trở lại. – wds

11

Để mở rộng câu trả lời của Pascal, đây là cách nó hoạt động với log4j:

<project> 
    ... 
    <build> 
    ... 
    <plugins> 
     <plugin> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>jetty-maven-plugin</artifactId> 
     <version>7.0.0.pre5</version> 
     <configuration> 
      <systemProperties> 
      <systemProperty> 
       <name>log4j.configurationFile</name> 
       <value>file:${project.basedir}/src/test/resources/log4j.properties</value> 
      </systemProperty> 
      </systemProperties> 
     </configuration> 
     <dependencies> 
      <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.16</version> 
      </dependency> 
      <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.6.1</version> 
      </dependency> 
      <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.6.1</version> 
      </dependency> 
     </dependencies> 
     </plugin> 
     ... 
    </plugins> 
    </build> 
    ... 
</project> 

Đây là ${project.basedir}/src/test/resources/log4j.properties của bạn:

log4j.rootLogger=INFO, CONSOLE 
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern = [%-5p] %c: %m\n 
log4j.logger.org.eclipse.jetty.util.log=INFO 

Tài nguyên bổ sung:

+0

Log4j.configurationFile thuộc tính hệ thống không hoạt động đối với tôi, nhưng log4j.configuration. –

+0

Đối log4j 1.2.16 Maven 3 tôi đã phải đi cho ' \t \t \t \t \t \t \t log4j.cấu hình \t \t \t \t \t \t \t $ {} project.baseUri /src/test/resources/log4j.properties \t \t \t \t \t \t ' –

5

Bạn cũng có thể làm được điều này "mvn -X cầu cảng: chạy"

0

Tôi thấy giải pháp này thuận tiện hơn

<resources> 
     <resource> 
      <directory>${project.basedir}/src/main/resources</directory> 
      <targetPath>${project.build.outputDirectory}</targetPath> 
      <includes> 
       <include>log4j.properties</include> 
      </includes> 
     </resource> 
    </resources> 

cũng đừng quên dán

<overwrite>true</overwrite> 

để cắm tài nguyên trong

2

Để mở rộng Pascal và yegor256 của câu trả lời, đây là cách nó hoạt động với SLF4J Simple logger (mà là lựa chọn dễ dàng nhất nhất kể từ khi bạn chỉ cần thêm một phụ thuộc vào slf4j-simple):

<project> 
    ... 
    <build> 
    ... 
    <plugins> 
     <plugin> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>jetty-maven-plugin</artifactId> 
     <version>7.0.0.pre5</version> 

     <dependencies> 
      <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-simple</artifactId> 
       <version>1.7.5</version> 
      </dependency> 
     </dependencies> 
     </plugin> 
     ... 
    </plugins> 
    </build> 
    ... 
</project> 

Có thể cấu hình Bộ ghi SLF4J trực tiếp từ Maven pom. Giá trị mặc định được mô tả trong http://www.slf4j.org/apidocs/org/slf4j/impl/SimpleLogger.html)

Ví dụ, đăng nhập vào một tập tin /tmp/output.log với mức độ cao hơn debug (TRACE):

<configuration> 
    <systemProperties> 
     <systemProperty> 
     <name>org.slf4j.simpleLogger.logFile</name> 
     <value>/tmp/output.log</value> 
     </systemProperty> 
     <systemProperty> 
     <name>org.slf4j.simpleLogger.defaultLogLevel</name> 
     <value>trace</value> 
     </systemProperty> 
    </systemProperties> 
</configuration> 
Các vấn đề liên quan