You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2017/12/22 12:28:20 UTC
[incubator-servicecomb-java-chassis] 03/09: [JAV-589] fix unit test
failure, add README.md
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
commit 0eebf9924043ed7a49ef8232e0ab495fd3b8e57b
Author: yaohaishi <ya...@huawei.com>
AuthorDate: Sat Dec 16 10:52:47 2017 +0800
[JAV-589] fix unit test failure, add README.md
---
.../transport/rest/vertx/accesslog/README.md | 56 ++++++++++++++++++++++
.../element/impl/FirstLineOfRequestElement.java | 10 ++--
.../vertx/accesslog/impl/AccessLogHandlerImpl.java | 4 +-
.../matcher/impl/DatetimeConfigurableMatcher.java | 4 +-
.../main/resources/config/base/log4j.properties | 2 +-
.../impl/FirstLineOfRequestElementTest.java | 3 +-
.../accesslog/impl/AccessLogHandlerImplTest.java | 22 ++++++---
7 files changed, 83 insertions(+), 18 deletions(-)
diff --git a/transports/transport-rest/transport-rest-vertx/src/main/java/io/servicecomb/transport/rest/vertx/accesslog/README.md b/transports/transport-rest/transport-rest-vertx/src/main/java/io/servicecomb/transport/rest/vertx/accesslog/README.md
new file mode 100644
index 0000000..840ea59
--- /dev/null
+++ b/transports/transport-rest/transport-rest-vertx/src/main/java/io/servicecomb/transport/rest/vertx/accesslog/README.md
@@ -0,0 +1,56 @@
+# transport-rest-vertx Access Log
+
+## Enable access log printing
+
+To enable access log printing, you can config access log in microservice.yaml like below:
+```yaml
+cse:
+ accesslog:
+ enabled: true
+ pattern: "%h - - %t %r !! %q cs-uri %% %s %B"
+```
+
+***Access Log Configurations in microservice.yaml***
+
+| Config Item | Range of Value | Default Value | Meaning |
+| :---------- | :------------- | :------------ | :------ |
+| cse.accesslog.enabled | true/false | false | print access log if true |
+| cse.accesslog.pattern | a string field representing log pattern | "%h - - %t %r %s %B" | see details of ***Currently Supported Elements*** below |
+
+> ***Caution:***
+> - all of the configuration item above can be omitted, in this case, default value will take effect.
+
+## Supported log elements
+
+***Currently Supported Elements***
+
+| Element | Apache | W3C | Comment |
+| ----|------|------------| --------|
+| Method | %m | cs-method | |
+| Status | %s | sc-status | |
+| Duration s | %T | - | |
+| Duration ms | %D | - | |
+| Remote Host | %h | - | |
+| Local Host | %v | - | |
+| Local port | %p | - | |
+| Bytes Written v1 | %B | - | Zero Bytes written as 0 |
+| Bytes Written v2 | %b | - | Zero Bytes written as - |
+| First line of request | %r | - | |
+| URI path only | %U | cs-uri-stem | |
+| Query only | %q | cs-uri-query | |
+| URI path incl query | - | cs-uri | |
+| Version / Protocol | %H | - | |
+| Datetime Apache | %t | - | Logs by default the request timestamp using format 'EEE, dd MMM yyyy HH:mm:ss zzz', Locale English and Timezone GMT |
+| Datetime Apache Configurable v1 | %{PATTERN}t | - | Specify the format pattern, by default it is used Locale English and Timezone GMT |
+| Datetime Apache Configurable v2 | %{PATTERN\|TIMEZONE\|LOCALE}t | - | Specify format pattern, timezone and locale |
+| Incoming Headers | %{IDENTIFIER}i | - | If not found - will be logged |
+| Outgoing Response Headers | %{IDENTIFIER}o | - | If not found - will be logged |
+| Cookie | %{IDENTIFIER}c | - | If not found - will be logged |
+
+## Access log file settings
+
+Default access log configurations is in `config/base/log4j.properties`.
+
+Access log will be written in a separate log file named `cse.access.log` located in the same directory with common logs.
+
+Users can override access log file configuration as the same way of common logs.
\ No newline at end of file
diff --git a/transports/transport-rest/transport-rest-vertx/src/main/java/io/servicecomb/transport/rest/vertx/accesslog/element/impl/FirstLineOfRequestElement.java b/transports/transport-rest/transport-rest-vertx/src/main/java/io/servicecomb/transport/rest/vertx/accesslog/element/impl/FirstLineOfRequestElement.java
index 6633817..6aa63e2 100644
--- a/transports/transport-rest/transport-rest-vertx/src/main/java/io/servicecomb/transport/rest/vertx/accesslog/element/impl/FirstLineOfRequestElement.java
+++ b/transports/transport-rest/transport-rest-vertx/src/main/java/io/servicecomb/transport/rest/vertx/accesslog/element/impl/FirstLineOfRequestElement.java
@@ -12,12 +12,14 @@ public class FirstLineOfRequestElement implements AccessLogElement {
@Override
public String getFormattedElement(AccessLogParam accessLogParam) {
- StringBuilder result = new StringBuilder()
+ StringBuilder result = new StringBuilder(64)
+ .append("\"")
.append(METHOD_ELEMENT.getFormattedElement(accessLogParam))
- .append(" \"")
+ .append(" ")
.append(URI_PATH_ONLY_ELEMENT.getFormattedElement(accessLogParam))
- .append("\" ")
- .append(VERSION_OR_PROTOCOL_ELEMENT.getFormattedElement(accessLogParam));
+ .append(" ")
+ .append(VERSION_OR_PROTOCOL_ELEMENT.getFormattedElement(accessLogParam))
+ .append("\"");
return result.toString();
}
diff --git a/transports/transport-rest/transport-rest-vertx/src/main/java/io/servicecomb/transport/rest/vertx/accesslog/impl/AccessLogHandlerImpl.java b/transports/transport-rest/transport-rest-vertx/src/main/java/io/servicecomb/transport/rest/vertx/accesslog/impl/AccessLogHandlerImpl.java
index daba806..560dcc5 100644
--- a/transports/transport-rest/transport-rest-vertx/src/main/java/io/servicecomb/transport/rest/vertx/accesslog/impl/AccessLogHandlerImpl.java
+++ b/transports/transport-rest/transport-rest-vertx/src/main/java/io/servicecomb/transport/rest/vertx/accesslog/impl/AccessLogHandlerImpl.java
@@ -17,8 +17,8 @@ public class AccessLogHandlerImpl implements AccessLogHandler {
private static AccessLogElement[] accessLogElements;
- public AccessLogHandlerImpl(String rowLogPattern, AccessLogPatternParser accessLogPatternParser) {
- List<AccessLogElementExtraction> extractionList = accessLogPatternParser.parsePattern(rowLogPattern);
+ public AccessLogHandlerImpl(String rawPattern, AccessLogPatternParser accessLogPatternParser) {
+ List<AccessLogElementExtraction> extractionList = accessLogPatternParser.parsePattern(rawPattern);
accessLogElements = new AccessLogElement[extractionList.size()];
for (int i = 0; i < extractionList.size(); ++i) {
diff --git a/transports/transport-rest/transport-rest-vertx/src/main/java/io/servicecomb/transport/rest/vertx/accesslog/parser/matcher/impl/DatetimeConfigurableMatcher.java b/transports/transport-rest/transport-rest-vertx/src/main/java/io/servicecomb/transport/rest/vertx/accesslog/parser/matcher/impl/DatetimeConfigurableMatcher.java
index 8279643..e281f9f 100644
--- a/transports/transport-rest/transport-rest-vertx/src/main/java/io/servicecomb/transport/rest/vertx/accesslog/parser/matcher/impl/DatetimeConfigurableMatcher.java
+++ b/transports/transport-rest/transport-rest-vertx/src/main/java/io/servicecomb/transport/rest/vertx/accesslog/parser/matcher/impl/DatetimeConfigurableMatcher.java
@@ -6,8 +6,8 @@ import io.servicecomb.transport.rest.vertx.accesslog.element.impl.DatetimeConfig
/**
* Compatible with two kinds of configurable datetime placeholder:
* <ul>
- * <li>%{PATTERN}t</li>
- * <li>%{PATTERN|TIMEZONE|LOCALE}t</li>
+ * <li>v1: %{PATTERN}t</li>
+ * <li>v2: %{PATTERN|TIMEZONE|LOCALE}t</li>
* </ul>
*/
public class DatetimeConfigurableMatcher extends ConfigurableAccessLogElementMatcher {
diff --git a/transports/transport-rest/transport-rest-vertx/src/main/resources/config/base/log4j.properties b/transports/transport-rest/transport-rest-vertx/src/main/resources/config/base/log4j.properties
index cbade69..efdaf63 100644
--- a/transports/transport-rest/transport-rest-vertx/src/main/resources/config/base/log4j.properties
+++ b/transports/transport-rest/transport-rest-vertx/src/main/resources/config/base/log4j.properties
@@ -8,6 +8,6 @@ log4j.appender.access.MaxBackupIndex=10
log4j.appender.access.MaxFileSize=20MB
log4j.appender.access.file=${paas.logs.accesslog.dir}${paas.logs.accesslog.file}
log4j.appender.access.layout=org.apache.log4j.PatternLayout
-log4j.appender.access.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss,SSS/zzz}] %m%n
+log4j.appender.access.layout.ConversionPattern=%m%n
log4j.appender.access.logPermission=rw-------
log4j.additivity.accesslog=false
diff --git a/transports/transport-rest/transport-rest-vertx/src/test/java/io/servicecomb/transport/rest/vertx/accesslog/element/impl/FirstLineOfRequestElementTest.java b/transports/transport-rest/transport-rest-vertx/src/test/java/io/servicecomb/transport/rest/vertx/accesslog/element/impl/FirstLineOfRequestElementTest.java
index 3626b24..964e588 100644
--- a/transports/transport-rest/transport-rest-vertx/src/test/java/io/servicecomb/transport/rest/vertx/accesslog/element/impl/FirstLineOfRequestElementTest.java
+++ b/transports/transport-rest/transport-rest-vertx/src/test/java/io/servicecomb/transport/rest/vertx/accesslog/element/impl/FirstLineOfRequestElementTest.java
@@ -1,7 +1,6 @@
package io.servicecomb.transport.rest.vertx.accesslog.element.impl;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
import org.junit.Test;
import org.mockito.Mockito;
@@ -31,6 +30,6 @@ public class FirstLineOfRequestElementTest {
String result = ELEMENT.getFormattedElement(param);
- assertEquals("DELETE \"" + uri + "\" HTTP/1.1", result);
+ assertEquals("\"DELETE " + uri + " HTTP/1.1\"", result);
}
}
\ No newline at end of file
diff --git a/transports/transport-rest/transport-rest-vertx/src/test/java/io/servicecomb/transport/rest/vertx/accesslog/impl/AccessLogHandlerImplTest.java b/transports/transport-rest/transport-rest-vertx/src/test/java/io/servicecomb/transport/rest/vertx/accesslog/impl/AccessLogHandlerImplTest.java
index 19a0bbc..6847d2e 100644
--- a/transports/transport-rest/transport-rest-vertx/src/test/java/io/servicecomb/transport/rest/vertx/accesslog/impl/AccessLogHandlerImplTest.java
+++ b/transports/transport-rest/transport-rest-vertx/src/test/java/io/servicecomb/transport/rest/vertx/accesslog/impl/AccessLogHandlerImplTest.java
@@ -2,7 +2,9 @@ package io.servicecomb.transport.rest.vertx.accesslog.impl;
import static org.junit.Assert.assertEquals;
+import java.text.SimpleDateFormat;
import java.util.Arrays;
+import java.util.TimeZone;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -22,15 +24,16 @@ import mockit.Deencapsulation;
public class AccessLogHandlerImplTest {
- public static final AccessLogElement methodElement = new MethodElement();
+ private static final AccessLogElement methodElement = new MethodElement();
- public static final AccessLogElement datetimeElement = new DatetimeConfigurableElement();
+ private static final AccessLogElement datetimeElement = new DatetimeConfigurableElement();
- public static final AccessLogElement plainTextElement = new PlainTextElement(" - ");
+ private static final AccessLogElement plainTextElement = new PlainTextElement(" - ");
- public static final Logger logger = Mockito.mock(Logger.class);
+ private static final Logger logger = Mockito.mock(Logger.class);
- private static final AccessLogHandlerImpl accessLogHandlerImpl = new AccessLogHandlerImpl("", s -> {
+ private static final AccessLogHandlerImpl accessLogHandlerImpl = new AccessLogHandlerImpl("rawPattern", s -> {
+ assertEquals("rawPattern", s);
return Arrays.asList(new AccessLogElementExtraction().setAccessLogElement(methodElement),
new AccessLogElementExtraction().setAccessLogElement(plainTextElement),
new AccessLogElementExtraction().setAccessLogElement(datetimeElement));
@@ -60,13 +63,18 @@ public class AccessLogHandlerImplTest {
public void testLog() {
RoutingContext context = Mockito.mock(RoutingContext.class);
HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
- AccessLogParam accessLogParam = new AccessLogParam().setStartMillisecond(1416863450581L).setRoutingContext(context);
+ long startMillisecond = 1416863450581L;
+ AccessLogParam accessLogParam = new AccessLogParam().setStartMillisecond(startMillisecond)
+ .setRoutingContext(context);
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DatetimeConfigurableElement.DEFAULT_DATETIME_PATTERN,
+ DatetimeConfigurableElement.DEFAULT_LOCALE);
+ simpleDateFormat.setTimeZone(TimeZone.getDefault());
Mockito.when(context.request()).thenReturn(request);
Mockito.when(request.method()).thenReturn(HttpMethod.DELETE);
Deencapsulation.invoke(accessLogHandlerImpl, "log", accessLogParam);
- Mockito.verify(logger).info("DELETE" + " - " + "Tue, 25 Nov 2014 05:10:50 CST");
+ Mockito.verify(logger).info("DELETE" + " - " + simpleDateFormat.format(startMillisecond));
}
}
\ No newline at end of file
--
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.