查了一下,Jetty 好像預設使用 slf4j(如果 classpath 中存在 slf4j 的話)[1]
所以似乎比較建議使用 slf4j 作為 Logger。
實際作法蠻簡單的~在專案的 pom.xml 中加入 slf4j 與 log4j 的相關設定
這裡因為我目前還是想用 log4j 來輸出,因此除了 slf4j-api 外,還放了 slf4j-log4j12 的套件
以讓 slf4j 的 log 得以往 log4j 輸出。
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.12</version>
</dependency>
然後在專案中加入 log4j 的輸出設定 log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<!-- param name="ConversionPattern" value='%d{yyyy.MM.dd HH:mm:ss.SSS} %5p (%c.%M) - %m%n' /> -->
<param name="ConversionPattern" value='%d{yyyy-MM-dd HH:mm:ss.SSS} | %p | %c > %m%n' />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="ConsoleAppender" />
</root>
</log4j:configuration>
最後在程式碼中,使用 slf4j 來寫 log。
這裡因為我實驗的是以 Jersey 為入口,因此直接用 Jersey 的範本程式碼:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Root resource (exposed at "myresource" path)
*/
@Path("/")
public class MyResource {
private static Logger log = LoggerFactory.getLogger("Test");
/**
* Method handling HTTP GET requests. The returned object will be sent
* to the client as "text/plain" media type.
*
* @return String that will be returned as a text/plain response.
*/
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {
log.info("Test got it for info");
log.debug("Test got it for deubg");
return "Got it!";
}
}
最後呼叫該函式(用瀏覽器存取該函式對應的 RESTful 網址)時,在 Jetty 上反應出來的 stderrout.log 如下:
2015-10-05 15:59:43.278:INFO:oejs.ServerConnector:main: Started ServerConnector@68c4d1f1{HTTP/1.1,[http/1.1]}{0.0.0.0:9200}
2015-10-05 15:59:43.280:INFO:oejs.ServerConnector:main: Started ServerConnector@42444104{HTTP/1.1,[http/1.1]}{0.0.0.0:9300}
2015-10-05 15:59:43.281:INFO:oejs.Server:main: Started @5379ms
2015-10-05 16:00:06.878 | INFO | Test > Test got it for info
2015-10-05 16:00:06.878 | DEBUG | Test > Test got it for deubg
參考資料:
沒有留言:
張貼留言