تمكين تسجيل تصحيح تسجيل الدخول في مكون Maven Jetty 7
-
24-09-2019 - |
سؤال
أنا أقوم بتشغيل Java Webapp مع بسيطة mvn jetty:run
, ، باستخدام أحدث مكونات إضافية ، ولكن لا يمكنني إيجاد طريقة لإخبار الرصيف بإخراج رسائل تصحيح الأخطاء إلى وحدة التحكم (لمثيل الرصيف المدمج ، وليس المكون الإضافي نفسه). إنه يخرج حاليًا فقط رسائل تحذير ومعلومات. لقد حاولت الإعداد -DDEBUG
و -DVERBOSE
, ، لكنهم لا يفعلون أي شيء. لقد ألقيت نظرة على توثيق, ، ولكن لا يبدو أنه يغطي هذا.
المحلول
تحديث: حسنًا ، لقد حصلت أخيرًا على أشياء تعمل وهنا ما فعلته.
أفهم أن Jetty 7 ليس لديه أي تبعيات على إطار تسجيل معين ، حتى بالنسبة لمحرك JSP لأن Jetty 7 يستخدم محرك JSP 2.1. حتى تتمكن من استخدام أي إطار تسجيل. هنا سأستخدم السوس.
إضافة أولا logback-classic
كاعتماد في البرنامج المساعد وضبط logback.configurationFile
خاصية النظام لتشير إلى ملف التكوين:
<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>
ثم أضف src/etc/logback.xml
ملف الضبط. أقل من الحد الأدنى من التكوين:
<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>
مع هذا الإعداد ، ستقوم Jetty بإخراج رسائل التصحيح:
$ mvn jetty:run ... 00:31:33.089 [main] DEBUG org.mortbay.log - starting DefaultHandler@145e5a6 00:31:33.089 [main] DEBUG org.mortbay.log - started DefaultHandler@145e5a6 00:31:33.105 [main] DEBUG org.mortbay.log - starting RequestLogHandler@1e80761 00:31:33.106 [main] DEBUG org.mortbay.log - started RequestLogHandler@1e80761 00:31:33.106 [main] DEBUG org.mortbay.log - starting HandlerCollection@1485542 00:31:33.106 [main] DEBUG org.mortbay.log - started HandlerCollection@1485542 00:31:33.106 [main] DEBUG org.mortbay.log - starting org.mortbay.jetty.Server@a010ba 00:31:33.174 [main] DEBUG org.mortbay.log - started org.mortbay.jetty.nio.SelectChannelConnector$1@ee21f5 00:31:33.216 [main] INFO org.mortbay.log - Started SelectChannelConnector@0.0.0.0:8080 00:31:33.217 [main] DEBUG org.mortbay.log - started SelectChannelConnector@0.0.0.0:8080 00:31:33.217 [main] DEBUG org.mortbay.log - started org.mortbay.jetty.Server@a010ba [INFO] Started Jetty Server
موارد:
- ال مافن الرصيف البرنامج المساعد صفحة
- ال M2] jetty6 plugin & log4j الرسالة/الموضوع
- ال الفصل 3: تكوين غلاف التسجيل من وثائق الغلاف
نصائح أخرى
لتمديد إجابة Pascal ، هذه هي الطريقة التي تعمل بها مع 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>
وهذا هو الخاص بك ${project.basedir}/src/test/resources/log4j.properties
:
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
مصادر إضافية:
يمكنك أيضًا القيام بذلك "MVN -X Jetty: Run"
لتمديد إجابة Pascal's و Yegor256 ، هكذا تعمل معها SLF4J Simple logger
(وهو الخيار الأكثر أسهل لأنك تحتاج فقط إلى إضافة اعتماد إلى 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>
من الممكن تكوين مسجل SLF4J مباشرة من Maven POM. يتم وصف الافتراضات في http://www.slf4j.org/apidocs/org/slf4j/impl/simplelogger.html)
على سبيل المثال ، قم بتسجيل الدخول إلى ملف /tmp/output.log
مع ارتفاع مستوى التصحيح (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>
أجد هذا الحل أكثر ملاءمة
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<targetPath>${project.build.outputDirectory}</targetPath>
<includes>
<include>log4j.properties</include>
</includes>
</resource>
</resources>
أيضا لا تنسى اللصق
<overwrite>true</overwrite>
للموارد البرنامج المساعد