You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/03/20 07:55:59 UTC
[servicecomb-java-chassis] 04/04: [SCB-1796] support request log :
modify as review and support log4j
This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
commit 034b7cc95ab95f2b4b9d136fc786d4b1f59ebb34
Author: heyile <25...@qq.com>
AuthorDate: Thu Mar 19 10:32:07 2020 +0800
[SCB-1796] support request log : modify as review and support log4j
---
.../common-access-log}/pom.xml | 10 +-
.../common/accessLog/AccessLogBootListener.java | 10 +-
.../common/accessLog/AccessLogBootstrap.java | 12 +-
.../common/accessLog/AccessLogConfig.java | 10 +-
.../common/accessLog/AccessLogInitializer.java | 6 +-
.../client/ClientDefaultInitializer.java | 23 +-
.../common/accessLog/core/AccessLogGenerator.java | 32 +-
.../servicecomb/common/accessLog/core/README.md | 373 +++++++++++++++++++++
.../accessLog/core/element/AccessLogItem.java | 15 +-
.../core/element/impl/CookieItemAccess.java | 12 +-
.../impl/DatetimeConfigurableItemAccess.java | 14 +-
.../impl/DurationMillisecondItemAccess.java | 10 +-
.../element/impl/DurationSecondItemAccess.java | 12 +-
.../element/impl/FirstLineOfRequestItemAccess.java | 28 +-
.../core/element/impl/HttpMethodItemAccess.java | 10 +-
.../core/element/impl/HttpStatusItemAccess.java | 12 +-
.../element/impl/InvocationContextItemAccess.java | 12 +-
.../core/element/impl/LocalHostItemAccess.java | 26 +-
.../core/element/impl/LocalPortItemAccess.java | 23 +-
.../core/element/impl/PlainTextItemAccess.java | 12 +-
.../core/element/impl/QueryStringItemAccess.java | 13 +-
.../core/element/impl/RemoteHostItemAccess.java | 10 +-
.../core/element/impl/RequestHeaderItemAccess.java | 13 +-
.../element/impl/RequestProtocolItemAccess.java | 23 +-
.../element/impl/ResponseHeaderItemAccess.java | 12 +-
.../core/element/impl/ResponseSizeItemAccess.java | 12 +-
.../core/element/impl/TraceIdItemAccess.java | 14 +-
.../core/element/impl/TransportItemAccess.java | 15 +-
.../core/element/impl/UrlPathItemAccess.java | 10 +-
.../element/impl/UrlPathWithQueryItemAccess.java | 10 +-
.../core/parser/AccessLogItemCreator.java | 18 +-
.../accessLog/core/parser/AccessLogItemMeta.java | 22 +-
.../core/parser/AccessLogPatternParser.java | 17 +-
.../CompositeVertxRestAccessLogItemMeta.java | 8 +-
.../core/parser/VertxRestAccessLogItemMeta.java | 22 +-
...DefaultCompositeVertxRestAccessLogItemMeta.java | 90 +++++
.../impl/VertxRestAccessLogPatternParser.java | 83 +++--
.../core/placeholder/AccessLogItemTypeEnum.java | 4 +-
.../server/ServerDefaultInitializer.java | 21 +-
...rvicecomb.common.accessLog.AccessLogInitializer | 4 +-
...ccessLog.core.parser.VertxRestAccessLogItemMeta | 2 +-
.../org.apache.servicecomb.core.BootListener | 2 +-
.../main/resources/config/base/log4j.properties | 13 +
.../common/accessLog/core/AccessLogConfigTest.java | 14 +-
.../accessLog/core/AccessLogGeneratorTest.java | 45 ++-
.../core/element/impl/CookieItemTest.java | 20 +-
.../element/impl/DatetimeConfigurableItemTest.java | 62 ++--
.../element/impl/DurationMillisecondItemTest.java | 8 +-
.../core/element/impl/DurationSecondItemTest.java | 16 +-
.../element/impl/FirstLineOfRequestItemTest.java | 12 +-
.../core/element/impl/HttpMethodItemTest.java | 16 +-
.../core/element/impl/HttpStatusItemTest.java | 14 +-
.../element/impl/InvocationContextItemTest.java | 36 +-
.../core/element/impl/LocalHostItemTest.java | 185 ++++++++++
.../core/element/impl/LocalPortItemTest.java | 63 +++-
.../core/element/impl/PlainTextItemTest.java | 10 +-
.../core/element/impl/QueryStringItemTest.java | 20 +-
.../core/element/impl/RemoteHostItemTest.java | 24 +-
.../core/element/impl/RequestHeaderItemTest.java | 14 +-
.../core/element/impl/RequestProtocolItemTest.java | 28 +-
.../core/element/impl/ResponseHeaderItemTest.java | 20 +-
.../core/element/impl/ResponseSizeItemTest.java | 12 +-
.../core/element/impl/TraceIdItemTest.java | 22 +-
.../core/element/impl/TransportItemTest.java | 18 +-
.../core/element/impl/UrlPathItemTest.java | 18 +-
.../element/impl/UrlPathWithQueryItemTest.java | 20 +-
.../impl/UserDefinedAccessAccessLogItem.java | 12 +-
.../UserDefinedAccessAccessLogItemLowPriority.java | 12 +-
...stCompositeExtendedAccessAccessLogItemMeta.java | 16 +-
.../TestSingleExtendedAccessAccessLogItemMeta.java | 13 +-
.../impl/VertxRestAccessLogPatternParserTest.java | 362 ++++++++++++++++++++
...ccessLog.core.parser.VertxRestAccessLogItemMeta | 4 +-
common/pom.xml | 1 +
dependencies/default/pom.xml | 10 +-
.../servicecomb/foundation/log/core/README.md | 75 -----
.../impl/DefaultCompositeVertxRestLogItemMeta.java | 89 -----
.../log/core/element/impl/LocalHostItemTest.java | 120 -------
.../impl/VertxRestAccessLogPatternParserTest.java | 362 --------------------
.../transport-rest/transport-rest-vertx/pom.xml | 8 +-
.../transport/rest/vertx/RestServerVerticle.java | 11 +-
80 files changed, 1677 insertions(+), 1215 deletions(-)
diff --git a/foundations/foundation-log/pom.xml b/common/common-access-log/pom.xml
similarity index 84%
rename from foundations/foundation-log/pom.xml
rename to common/common-access-log/pom.xml
index 4d229a9..d0a2d69 100644
--- a/foundations/foundation-log/pom.xml
+++ b/common/common-access-log/pom.xml
@@ -19,14 +19,14 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
- <artifactId>foundations</artifactId>
+ <artifactId>common</artifactId>
<groupId>org.apache.servicecomb</groupId>
<version>2.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
- <artifactId>foundation-log</artifactId>
- <name>Java Chassis::Foundations::Log</name>
+ <artifactId>common-access-log</artifactId>
+ <name>Java Chassis::Common::CommonAccessLog</name>
<dependencies>
<dependency>
@@ -35,6 +35,10 @@
</dependency>
<dependency>
<groupId>org.apache.servicecomb</groupId>
+ <artifactId>foundation-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicecomb</groupId>
<artifactId>common-rest</artifactId>
</dependency>
</dependencies>
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/LogBootListener.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogBootListener.java
similarity index 79%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/LogBootListener.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogBootListener.java
index 2be8cb2..e84724c 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/LogBootListener.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogBootListener.java
@@ -15,22 +15,22 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log;
+package org.apache.servicecomb.common.accessLog;
import org.apache.servicecomb.core.BootListener;
import org.apache.servicecomb.foundation.common.event.EventManager;
-public class LogBootListener implements BootListener {
+public class AccessLogBootListener implements BootListener {
- private LogBootstrap logBootstrap = new LogBootstrap();
+ private AccessLogBootstrap accessLogBootstrap = new AccessLogBootstrap();
@Override
public void onAfterRegistry(BootEvent event) {
- logBootstrap.start(EventManager.getEventBus());
+ accessLogBootstrap.start(EventManager.getEventBus());
}
@Override
public void onBeforeClose(BootEvent event) {
- logBootstrap.shutdown();
+ accessLogBootstrap.shutdown();
}
}
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/LogBootstrap.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogBootstrap.java
similarity index 77%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/LogBootstrap.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogBootstrap.java
index f8493f4..e46542e 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/LogBootstrap.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogBootstrap.java
@@ -15,25 +15,25 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log;
+package org.apache.servicecomb.common.accessLog;
import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
import com.google.common.eventbus.EventBus;
-public class LogBootstrap {
- private static LogConfig config = LogConfig.INSTANCE;
+public class AccessLogBootstrap {
+ private static AccessLogConfig config = AccessLogConfig.INSTANCE;
private EventBus eventBus;
public void start(EventBus eventBus) {
this.eventBus = eventBus;
- SPIServiceUtils.getSortedService(LogInitializer.class)
+ SPIServiceUtils.getSortedService(AccessLogInitializer.class)
.forEach(initializer -> initializer.init(eventBus, config));
}
public void shutdown() {
- SPIServiceUtils.getSortedService(LogInitializer.class)
- .forEach(LogInitializer::destroy);
+ SPIServiceUtils.getSortedService(AccessLogInitializer.class)
+ .forEach(AccessLogInitializer::destroy);
}
}
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/LogConfig.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogConfig.java
similarity index 90%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/LogConfig.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogConfig.java
index 8b4de90..ce2dc58 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/LogConfig.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogConfig.java
@@ -15,15 +15,15 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log;
+package org.apache.servicecomb.common.accessLog;
import com.netflix.config.DynamicPropertyFactory;
-public class LogConfig {
+public class AccessLogConfig {
private static final String SERVER_BASE = "servicecomb.accesslog.";
- private static final String CLIENT_BASE = "servicecomb.outlog.";
+ private static final String CLIENT_BASE = "servicecomb.accesslog.request.";
private static final String SERVER_LOG_ENABLED = SERVER_BASE + "enabled";
@@ -37,7 +37,7 @@ public class LogConfig {
private static final String DEFAULT_CLIENT_PATTERN = "%h %SCB-transport - - %t %r %s %D";
- public static final LogConfig INSTANCE = new LogConfig();
+ public static final AccessLogConfig INSTANCE = new AccessLogConfig();
private boolean serverLogEnabled;
@@ -47,7 +47,7 @@ public class LogConfig {
private String clientLogPattern;
- private LogConfig() {
+ private AccessLogConfig() {
init();
}
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/LogInitializer.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogInitializer.java
similarity index 85%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/LogInitializer.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogInitializer.java
index 02f8520..564f043 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/LogInitializer.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/AccessLogInitializer.java
@@ -14,16 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log;
+package org.apache.servicecomb.common.accessLog;
import com.google.common.eventbus.EventBus;
-public interface LogInitializer {
+public interface AccessLogInitializer {
default int getOrder() {
return 0;
}
- void init(EventBus eventBus, LogConfig logConfig);
+ void init(EventBus eventBus, AccessLogConfig accessLogConfig);
default void destroy() {}
}
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/client/ClientDefaultInitializer.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/client/ClientDefaultInitializer.java
similarity index 63%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/client/ClientDefaultInitializer.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/client/ClientDefaultInitializer.java
index 2820cc2..113ffc1 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/client/ClientDefaultInitializer.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/client/ClientDefaultInitializer.java
@@ -15,12 +15,13 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.client;
+package org.apache.servicecomb.common.accessLog.client;
+import org.apache.servicecomb.common.accessLog.AccessLogConfig;
+import org.apache.servicecomb.common.accessLog.AccessLogInitializer;
+import org.apache.servicecomb.common.accessLog.core.AccessLogGenerator;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
-import org.apache.servicecomb.foundation.log.LogConfig;
-import org.apache.servicecomb.foundation.log.LogInitializer;
-import org.apache.servicecomb.foundation.log.core.LogGenerator;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -28,23 +29,23 @@ import com.google.common.eventbus.AllowConcurrentEvents;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;
-public class ClientDefaultInitializer implements LogInitializer {
- private static Logger LOGGER = LoggerFactory.getLogger("outlog");
+public class ClientDefaultInitializer implements AccessLogInitializer {
+ private static Logger LOGGER = LoggerFactory.getLogger("requestlog");
- private LogGenerator logGenerator;
+ private AccessLogGenerator accessLogGenerator;
@Override
- public void init(EventBus eventBus, LogConfig logConfig) {
- if (!logConfig.isClientLogEnabled()) {
+ public void init(EventBus eventBus, AccessLogConfig accessLogConfig) {
+ if (!accessLogConfig.isClientLogEnabled()) {
return;
}
- logGenerator = new LogGenerator(logConfig.getClientLogPattern());
+ accessLogGenerator = new AccessLogGenerator(accessLogConfig.getClientLogPattern());
eventBus.register(this);
}
@Subscribe
@AllowConcurrentEvents
public void onRequestOut(InvocationFinishEvent finishEvent) {
- LOGGER.info(logGenerator.generateClientLog(finishEvent));
+ LOGGER.info(accessLogGenerator.generateClientLog(finishEvent));
}
}
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/LogGenerator.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/AccessLogGenerator.java
similarity index 58%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/LogGenerator.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/AccessLogGenerator.java
index 6933841..cd46209 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/LogGenerator.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/AccessLogGenerator.java
@@ -15,15 +15,15 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core;
+package org.apache.servicecomb.common.accessLog.core;
import java.util.List;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
+import org.apache.servicecomb.common.accessLog.core.parser.AccessLogPatternParser;
+import org.apache.servicecomb.common.accessLog.core.parser.impl.VertxRestAccessLogPatternParser;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
-import org.apache.servicecomb.foundation.log.core.parser.LogPatternParser;
-import org.apache.servicecomb.foundation.log.core.parser.impl.VertxRestLogPatternParser;
import com.google.common.collect.Iterables;
@@ -34,37 +34,37 @@ import io.vertx.ext.web.RoutingContext;
* <br/>
* Each AccessLogParam for a line of access log.
*/
-public class LogGenerator {
+public class AccessLogGenerator {
/*
* traversal this array to generate access log segment.
*/
- private LogItem<RoutingContext>[] logItems;
+ private AccessLogItem<RoutingContext>[] accessLogItems;
- private LogPatternParser<RoutingContext> logPatternParser = new VertxRestLogPatternParser();
+ private AccessLogPatternParser<RoutingContext> logPatternParser = new VertxRestAccessLogPatternParser();
@SuppressWarnings("unchecked")
- public LogGenerator(String rawPattern) {
- List<LogItem<RoutingContext>> logItemList = logPatternParser.parsePattern(rawPattern);
- logItems = Iterables.toArray(logItemList, LogItem.class);
+ public AccessLogGenerator(String rawPattern) {
+ List<AccessLogItem<RoutingContext>> accessLogItemList = logPatternParser.parsePattern(rawPattern);
+ accessLogItems = Iterables.toArray(accessLogItemList, AccessLogItem.class);
}
public String generateServerLog(ServerAccessLogEvent accessLogEvent) {
StringBuilder log = new StringBuilder(128);
- for (LogItem<RoutingContext> logItem : getLogItems()) {
- logItem.appendFormattedItem(accessLogEvent, log);
+ for (AccessLogItem<RoutingContext> accessLogItem : getAccessLogItems()) {
+ accessLogItem.appendServerFormattedItem(accessLogEvent, log);
}
return log.toString();
}
public String generateClientLog(InvocationFinishEvent finishEvent) {
StringBuilder log = new StringBuilder(128);
- for (LogItem<RoutingContext> logItem : getLogItems()) {
- logItem.appendFormattedItem(finishEvent, log);
+ for (AccessLogItem<RoutingContext> accessLogItem : getAccessLogItems()) {
+ accessLogItem.appendClientFormattedItem(finishEvent, log);
}
return log.toString();
}
- private LogItem<RoutingContext>[] getLogItems() {
- return logItems;
+ private AccessLogItem<RoutingContext>[] getAccessLogItems() {
+ return accessLogItems;
}
}
diff --git a/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/README.md b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/README.md
new file mode 100644
index 0000000..7b631e0
--- /dev/null
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/README.md
@@ -0,0 +1,373 @@
+## 概念阐述
+
+ServiceComb提供了基于Vert.x的access log 和 request log功能。当用户使用REST over Vertx通信方式时,可以通过简单的配置启用access log打印功能。当用户 client 端进行远程调用时,可以通过简单的配置启用request log打印功能
+
+## 场景描述
+
+1. 用户在调试服务时可能需要开启access log。在使用REST over servlet通信方式的情况下,可以使用web容器的access log功能;而在使用REST over Vertx通信方式的情况下,可以使用ServiceComb提供的一套access log功能。
+
+2. 用户想要跟踪,记录客户端远程调用信息, 可以开启 request log。request log 同时支持记录 rest 和 highway 远程调用方式。
+
+## 配置说明
+
+### 启用Access Log and Request Log
+
+用户需要在microservice.yaml文件中增加配置以启用access log 和 request log,配置示例如下:
+
+```yaml
+servicecomb:
+ accesslog:
+ enabled: true ## server 端 启用access log
+ pattern: "%h - - %t %r %s %B %D" ## server 端 自定义 access log 日志格式
+ request:
+ enabled: true ## client 端开启 request log
+ pattern: "%h %SCB-transport - - %t %r %s %D" ## client 端自定义 request log 日志格式
+```
+
+_**Access log & Request log 配置项说明**_
+
+| 配置项 | 取值范围 | 默认值 | 说明 |
+| :--- | :--- | :--- | :--- |
+| servicecomb.accesslog.enabled | true/false | **false** | 如果为true则启用access log,否则不启用 |
+| servicecomb.accesslog.pattern | 表示打印格式的字符串 | **"%h - - %t %r %s %B %D"** | 配置项见_**日志元素说明表**_ |
+| servicecomb.accesslog.request.enabled | true/false | **false** | 如果为true则启用request log,否则不启用 |
+| servicecomb.accesslog.request.pattern | 表示打印格式的字符串 | **"%h %SCB-transport - - %t %r %s %D"** | 配置项见_**日志元素说明表**_ |
+
+> _**说明:**_
+>
+> * 以上两个配置项均可省略,若省略则使用默认值。
+
+### 日志格式配置
+
+目前可用的日志元素配置项见 ***日志元素说明表(Apache & W3C)*** 和 ***日志元素说明表(ServiceComb)*** 。
+
+_**日志元素说明表 (Apache & W3C)**_
+
+| 元素名称 | Apache日志格式 | W3C日志格式 | 说明 |
+| :--- | :--- | :--- | :--- |
+| HTTP method | %m | cs-method | - |
+| HTTP status | %s | sc-status | - |
+| Duration in second | %T | - | - |
+| Duration in millisecond | %D | - | - |
+| Remote hostname | %h | - | - |
+| Local hostname | %v | - | - |
+| Local port | %p | - | - |
+| Size of response | %B | - | 如果消息体长度为零则打印"0" |
+| Size of response | %b | - | 如果消息体长度为零则打印"-" |
+| First line of request | %r | - | 包含HTTP Method、Uri、Http版本三部分内容 |
+| URI path | %U | cs-uri-stem | - |
+| Query string | %q | cs-uri-query | - |
+| URI path and query string | - | cs-uri | - |
+| Request protocol | %H | - | - |
+| Datetime the request is received | %t | - | 按照默认设置打印时间戳,格式为"EEE, dd MMM yyyy HH:mm:ss zzz",语言为英文,时区为GMT |
+| Configurable datetime the request is received | %{PATTERN}t | - | 按照指定的格式打印时间戳,语言为英文,时区为GMT |
+| Configurable datetime the request is received | %{PATTERN|TIMEZONE|LOCALE}t | - | 按照指定的格式、语言、时区打印时间戳。允许省略其中的某部分配置(但两个分隔符号"|"不可省略)。 |
+| Request header | %{VARNAME}i | - | 如果没有找到指定的header,则打印"-" |
+| Response header | %{VARNAME}o | - | 如果没有找到指定的header,则打印"-" |
+| Cookie | %{VARNAME}C | - | 如果没有找到指定的cookie,则打印"-" |
+
+_**日志元素说明表(ServiceComb)**_
+
+| Element | Placeholder | Comment |
+| :---- | :---------- | :------ |
+| TraceId | %SCB-traceId | 打印ServiceComb生成的trace id,找不到则打印"-" |
+| Invocation Context | %{VARNAME}SCB-ctx | 打印key为`VARNAME`的invocation context值,找不到则打印"-" |
+| Transport Method | %SCB-transport | 打印当前调用的 **transport method** 。 `rest` 或者 `highway`|
+
+_**Access log 与 Request log的日志元素对比**_
+
+| 元素名称 | Apache&W3C日志格式 | access log |access log 说明 | request log | request log说明 |
+| --- | --- | --- | --- | --- | --- |
+| HTTP method | %m & cs-method | support | - | support | - |
+| HTTP status | %s & sc-status | support | - | support | - |
+| Duration in second | %T | support | - | support | - |
+| Duration in millisecond | %D | support | - | support | - |
+| Remote hostname | %h | support | - | support | - |
+| Local hostname | %v | support | - | support | - |
+| Local port | %p | support | - | support | - |
+| Size of response | %B | support | 如果消息体长度为零则打印"0" | unsupported| - |
+| Size of response | %b | support | 如果消息体长度为零则打印"-" | unsupported| - |
+| First line of request | %r | support | 包含HTTP Method、Uri、Http版本三部分内容| support | 包含HTTP Method、Uri、Http版本三部分内容|
+|URI path| %U & cs-uri-stem | support | - | support | - |
+|Query string | %q & cs-uri-query | support | - | support | - |
+|URI path and query string | cs-uri | support | - | support | - |
+| Request protocol | %H | support | - | support | - |
+| Datetime of the request | %t | support | 收到请求的时间。默认格式为"EEE, dd MMM yyyy HH:mm:ss zzz",语言为英文,时区为GMT | support | 发送请求的时间。默认格式为"EEE, dd MMM yyyy HH:mm:ss zzz",语言为英文,时区为GMT|
+|Configurable datetime the request of the request | %{PATTERN}t | support | 收到请求的时间。按照指定的格式打印时间戳,语言为英文,时区为GMT | support | 发送请求的时间。按照指定的格式打印时间戳,语言为英文,时区为GMT|
+|Configurable datetime the request of the request | %{PATTERN|TIMEZONE|LOCALE}t | support | 收到请求的时间。按照指定的格式、语言、时区打印时间戳。允许省略其中的某部分配置(但两个分隔符号"|"不可省略)。| support | 发送请求的时间。按照指定的格式、语言、时区打印时间戳。允许省略其中的某部分配置(但两个分隔符号"|"不可省略)。|
+|Request header | %{VARNAME}i | support | 如果没有找到指定的header,则打印"-" | support | 如果没有找到指定的header,则打印"-" |
+|Response header | %{VARNAME}o | support | 如果没有找到指定的header,则打印"-"| support | 如果没有找到指定的header,则打印"-" |
+|Cookie | %{VARNAME}C | support | 如果没有找到指定的cookie,则打印"-" | support | 如果没有找到指定的cookie,则打印"-" |
+|TraceId | %SCB-traceId | support |打印ServiceComb生成的trace id,找不到则打印"-" | support |打印ServiceComb生成的trace id,找不到则打印"-" |
+|Invocation Context | %{VARNAME}SCB-ctx | support | 打印key为`VARNAME`的invocation context值,找不到则打印"-" |support | 打印key为`VARNAME`的invocation context值,找不到则打印"-" |
+|transport method | %SCB-transport | unsupported | 只支持 rest 形式调用 | support | 调用使用的transport method|
+
+
+### 日志输出文件配置
+
+Access log的日志打印实现框架默认采用Log4j,并提供了一套默认的日志文件配置。用户可以在自己定义的log4j.properties文件中覆写这些配置。用户可配置的日志文件配置项见下表。
+
+_**日志文件配置项**_
+
+| 配置项 | 默认值 | 含义 | 说明 |
+| :--- | :--- | :--- | :--- |
+| paas.logs.accesslog.dir | ${paas.logs.dir} | 日志文件输出目录 | 与普通日志输出到同一个目录中 |
+| paas.logs.accesslog.file | access.log | 日志文件名 | - |
+| log4j.appender.access.MaxBackupIndex | 10 | 最大保存的日志滚动文件个数 | - |
+| log4j.appender.access.MaxFileSize | 20MB | 日志文件最大体积 | 正在记录的文件达到此大小时触发日志滚动存储 |
+| log4j.appender.access.logPermission | rw------- | 日志文件权限 | - |
+| paas.logs.requestlog.dir | ${paas.logs.dir} | 日志文件输出目录 | 与普通日志输出到同一个目录中 |
+| paas.logs.requestlog.file | request.log | 日志文件名 | - |
+| log4j.appender.request.MaxBackupIndex | 10 | 最大保存的日志滚动文件个数 | - |
+| log4j.appender.request.MaxFileSize | 20MB | 日志文件最大体积 | 正在记录的文件达到此大小时触发日志滚动存储 |
+| log4j.appender.request.logPermission | rw------- | 日志文件权限 | - |
+
+> _**注意:**_
+> 由于ServiceComb的日志打印功能只依赖slf4j的接口,因此用户可以选择其他日志打印框架,选择其他日志打印框架时需要用户自行配置日志文件输出选项。
+
+### 日志实现框架切换为logback
+
+> 针对采用logback作为日志打印框架的项目,需要将日志打印框架依赖从Log4j改为logback并添加部分配置以使access log功能正常生效。
+
+#### 1. 排除Log4j依赖
+
+在将日志实现框架切换为logback之前,需要检查项目的依赖,从中排除掉Log4j相关的依赖项。在项目中运行maven命令`dependency:tree`,找出其中依赖了Log4j的ServiceComb组件,在其`<dependency>`依赖项中添加如下配置:
+
+```xml
+<exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+</exclusion>
+```
+
+#### 2. 添加logback依赖
+
+在pom文件中添加logback的依赖项:
+
+```xml
+<dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+</dependency>
+<dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+</dependency>
+<dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-core</artifactId>
+</dependency>
+```
+
+#### 3. 配置access log & request log 组件的logger
+
+由于ServiceComb提供的日志打印组件是获取名为`accesslog` & `requestlog` 的logger来打印access log 和 request log ,因此将日志实现框架从Log4j切换为logback的关键就是提供一个名为`accesslog` & `requestlog` 的 Logger,并为其配置好日志输出文件。以下是 **access log** & **request log** 在logback配置文件中的配置示例(本示例仅展示access log & request log相关的配置,其他日志配置均省略):
+
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+ <!-- 用户可根据需要自定义appender -->
+ <appender name="ACCESSLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>./logs/access.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>./logs/access-%d{yyyy-MM-dd}.log</fileNamePattern>
+ </rollingPolicy>
+ <!-- 注意:由于access log的内容是在代码中完成格式化的,因此这里只需输出message即可,无需添加额外的格式 -->
+ <encoder>
+ <pattern>%msg%n</pattern>
+ </encoder>
+ </appender>
+ <appender name="REQUESTLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>./logs/request.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>./logs/access-%d{yyyy-MM-dd}.log</fileNamePattern>
+ </rollingPolicy>
+ <!-- 注意:由于request log的内容是在代码中完成格式化的,因此这里只需输出message即可,无需添加额外的格式 -->
+ <encoder>
+ <pattern>%msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <!-- 提供一个名为"accesslog"的logger供access log打印组件使用 -->
+ <logger name="accesslog" level="INFO" additivity="false">
+ <appender-ref ref="ACCESSLOG" />
+ </logger>
+ <!-- 提供一个名为"requestlog"的logger供request log打印组件使用 -->
+ <logger name="requestlog" level="INFO" additivity="false">
+ <appender-ref ref="REQUESTLOG" />
+ </logger>
+
+</configuration>
+```
+
+### 自定义扩展Access Log & Request Log
+
+用户可以利用ServiceComb提供的AccessLogItem扩展机制,定制自己的AccessLogItem, 我们把 Request Log 也当做一种 Access Log。
+
+#### 相关类说明
+
+1. **AccessLogItem**
+
+```java
+public interface AccessLogItem<T> {
+ // 从Server端获取信息,打印 Access Log 日志
+ default void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ }
+
+ // 从Client 端获取信息, 打印 Request Log
+ default void appendClientFormattedItem(InvocationFinishEvent clientLogEvent, StringBuilder builder) {
+ }
+}
+```
+
+> **AccessLogItem** 的定义如上所示
+>
+> * **Server 端** 每收到一个请求,会触发一次 Access Log 日志打印。**Client 端** 每次对外远程调用结束,会触发一次 Request Log 日志打印。
+>
+> * 每次日志打印,SDK 都会遍历有效的 `AccessLogItem` ,调用对应的方法获取此Item生成的Log片段,并将全部片段拼接成一条Log打印到日志文件中。
+
+
+2. **VertxRestAccessLogItemMeta**
+
+ ```java
+ // pattern占位符前缀
+ protected String prefix;
+ // pattern占位符后缀
+ protected String suffix;
+ // 优先级序号
+ protected int order;
+ // AccessLogItem构造器
+ protected AccessLogItemCreator<RoutingContext> accessLogItemCreator;
+ ```
+
+`VertxRestAccessLogItemMeta` 包含如上属性,它定义了ServiceComb如何解析pattern字符串以获得特定的AccessLogItem。
+
+* 如果用户想要定义一个占位符为`%user-defined`的`AccessLogItem`,则需要声明一个`VertxRestAccessLogItemMeta`的子类,设置prefix="%user-defined",suffix=null,当`AccessLogPatternParser`解析到"%user-defined"时,从此meta类中取得`AccessLogItemCreator`创建对应的`AccessLogItem`。**注意**:由于"%user-defined"占位符中没有变量部分,因此调用`AccessLogItemCreator`传入的配置参数为null。
+
+* 如果用户想要定义一个占位符为`%{VARNAME}user-defined`的`AccessLogItem`,则声明的`VertxRestAccessLogItemMeta`子类中,设置prefix="%{",suffix="}user-defined",当`AccessLogPatternParser`解析到"%{VARNAME}user-defined"时,会截取出"VARNAME"作为配置参数传入`AccessLogItemCreator`,创建一个`AccessLogItem`。
+
+ `VertxRestAccessLogItemMeta`有一个子类`CompositeVertxRestAccessLogItemMeta`,当用户需要定义多个AccessLogItem时,可以将多个`VertxRestAccessLogItemMeta`聚合到`CompositeVertxRestAccessLogItemMeta`中。Parser加载到类型为`CompositeVertxRestAccessLogItemMeta`的AccessLogItemMeta时,会调用其`getAccessLogItemMetas()`方法获得一组AccessLogItemMeta。`VertxRestAccessLogItemMeta`使用SPI机制加载,而`CompositeVertxRestAccessLogItemMeta`可以让用户只在SPI配置文件中配置一条记录就加载多条meta信息,给了用户更灵活的选择。
+
+3. **AccessLogItemCreator**
+
+ ```java
+ public interface AccessLogItemCreator<T> {
+ // 接收配置值,返回一个AccessLogItem。如果AccessLogItem的占位符没有可变的配置值部分,则此方法会接收到null。
+ AccessLogItem<T> createItem(String config);
+ }
+ ```
+
+ 用户通过设置在自定义的`VertxRestAccessLogItemMeta`中的`AccessLogItemCreator`实例化自己的`AccessLogItem`。由于这是一个函数式接口,当`AccessLogItem`的初始化方式较简单时,可以直接使用Lambda表达式定义Creator,以简化开发。
+
+#### AccessLogItemMeta的匹配规则
+
+AccessLogItemMeta加载进Parser后,会进行一次排序。Parser解析pattern串时会从前到后匹配meta list,总的匹配规则如下:
+
+1. 优先匹配高优先级的meta。
+
+2. 优先匹配有后缀的meta,当匹配上多个有后缀meta时,取前后缀相距最小的一个。
+
+3. 优先匹配占位符长的meta,例如有两个meta,"%abc"和"%a",如果匹配中了"%abc"则直接返回,不再匹配"%a"。
+
+#### 示例说明
+
+1. 扩展自定义AccessLogItem
+
+首先用户需要`AccessLogItem`接口实现自己的item:
+
+```java
+ public class UserDefinedAccessLogItem implements AccessLogItem<RoutingContext> {
+ private String config;
+
+ public UserDefinedAccessLogItem(String config) {
+ this.config = config;
+ }
+
+ @Override
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ builder.append("user-defined--server-")
+ .append(accessLogEvent.getRoutingContext().response().getStatusCode())
+ .append("-")
+ .append(config);
+ }
+
+ @Override
+ public void appendClientFormattedItem(InvocationFinishEvent clientLogEvent, StringBuilder builder) {
+ builder.append("user-server-defined-")
+ .append(clientLogEvent.getResponse().getStatus())
+ .append("-")
+ .append(config);
+ }
+ }
+ ```
+
+2. 定义AccessLogItem的meta类
+
+ 继承`VertxRestAccessLogItemMeta`或`CompositeVertxRestAccessLogItemMeta`类,定义AccessLogItem的前后缀等信息:
+
+```java
+public class UserDefinedCompositeExtendedAccessLogItemMeta extends CompositeVertxRestAccessLogItemMeta {
+private static final List<VertxRestAccessLogItemMeta> META_LIST = new ArrayList<>();
+
+static {
+ META_LIST.add(new VertxRestAccessLogItemMeta("%{", "}user-defined", UserDefinedAccessLogItem::new));
+}
+
+@Override
+public List<VertxRestAccessLogItemMeta> getAccessLogItemMetas() {
+ return META_LIST;
+}
+}
+```
+
+3. 配置SPI加载文件
+
+ 在`resources/META-INF/services/`目录下定义一个名为"org.apache.servicecomb.transport.rest.vertx.accesslog.parser.VertxRestAccessLogItemMeta"的文件,将上一步中定义的meta类完整类名填写到该文件中,供Parser加载meta类。
+
+4. 配置 Access Log的 pattern
+
+```yaml
+# 服务端配置
+servicecomb:
+ accesslog:
+ enabled: true ## 应用作为服务端,开启 Access log
+ pattern: "%{param}user-defined" ## Access log 日志格式
+ request:
+ enabled: true ## 应用作为客户端,开启 Request log
+ pattern: "%{param}user-defined" ## Request log 日志格式
+```
+
+以服务端为例, 运行服务触发Access Log打印,假设请求返回状态码是 200,则可以看到Access Log打印内容为 "`user-defined--server-200-param`"。
+
+## 示例代码
+
+### microservice.yaml文件中的配置
+
+```yaml
+## other configurations omitted
+servicecomb:
+ accesslog:
+ enabled: true ## 应用作为服务端,开启 Access log
+ pattern: "%h - - %t %r %s %B %D" ## Access log 日志格式
+ request:
+ enabled: true ## 应用作为客户端,开启 Request log
+ pattern: "%h %SCB-transport - - %t %r %s %D" ## Request log 日志格式
+
+```
+
+### log4j.properties文件中的配置
+
+```properties
+# log configuration item
+paas.logs.dir=../logs/
+paas.logs.accesslog.file=access.log
+paas.logs.requestlog.file=request.log
+# access log File appender
+log4j.appender.access.MaxBackupIndex=10
+log4j.appender.access.MaxFileSize=20MB
+log4j.appender.access.logPermission=rw-------
+# request log File appender
+log4j.appender.request.MaxBackupIndex=10
+log4j.appender.request.MaxFileSize=20MB
+log4j.appender.request.logPermission=rw-------
+```
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/LogItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/AccessLogItem.java
similarity index 67%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/LogItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/AccessLogItem.java
index d52cd97..02fffb2 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/LogItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/AccessLogItem.java
@@ -15,22 +15,19 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element;
+package org.apache.servicecomb.common.accessLog.core.element;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
/*
- * Access log item represents the items supported in access log printing.
- * It generate the segment of access log according to {@link AccessLogParam}
+ * Access log item represents the items supported in access log and request log printing.
+ * It generate the segment of log according to {@link AccessLogParam}
*/
-public interface LogItem<T> {
- /*
- * find out specified content from {@link AccessLogParam}, format the content and return it.
- */
- default void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+public interface AccessLogItem<T> {
+ default void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
}
- default void appendFormattedItem(InvocationFinishEvent clientLogEvent, StringBuilder builder) {
+ default void appendClientFormattedItem(InvocationFinishEvent clientLogEvent, StringBuilder builder) {
}
}
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/CookieItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/CookieItemAccess.java
similarity index 83%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/CookieItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/CookieItemAccess.java
index e454d8f..a0965ba 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/CookieItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/CookieItemAccess.java
@@ -15,32 +15,32 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import java.util.Map;
import java.util.Map.Entry;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.common.rest.RestConst;
import org.apache.servicecomb.common.rest.codec.param.RestClientRequestImpl;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import io.vertx.core.http.Cookie;
import io.vertx.ext.web.RoutingContext;
-public class CookieItem implements LogItem<RoutingContext> {
+public class CookieItemAccess implements AccessLogItem<RoutingContext> {
public static final String RESULT_NOT_FOUND = "-";
private final String varName;
- public CookieItem(String varName) {
+ public CookieItemAccess(String varName) {
this.varName = varName;
}
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
Map<String, Cookie> cookieMap = accessLogEvent.getRoutingContext().cookieMap();
if (null == cookieMap) {
builder.append(RESULT_NOT_FOUND);
@@ -56,7 +56,7 @@ public class CookieItem implements LogItem<RoutingContext> {
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
RestClientRequestImpl restRequestImpl = (RestClientRequestImpl) finishEvent.getInvocation().getHandlerContext()
.get(RestConst.INVOCATION_HANDLER_REQUESTCLIENT);
if (null == restRequestImpl || null == restRequestImpl.getCookieMap()) {
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/DatetimeConfigurableItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DatetimeConfigurableItemAccess.java
similarity index 88%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/DatetimeConfigurableItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DatetimeConfigurableItemAccess.java
index 4ef94f7..3877361 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/DatetimeConfigurableItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DatetimeConfigurableItemAccess.java
@@ -15,16 +15,16 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import org.springframework.util.StringUtils;
import io.vertx.ext.web.RoutingContext;
@@ -32,7 +32,7 @@ import io.vertx.ext.web.RoutingContext;
/**
* Configurable dateTime element.
*/
-public class DatetimeConfigurableItem implements LogItem<RoutingContext> {
+public class DatetimeConfigurableItemAccess implements AccessLogItem<RoutingContext> {
public static final String DEFAULT_DATETIME_PATTERN = "EEE, dd MMM yyyy HH:mm:ss zzz";
@@ -49,7 +49,7 @@ public class DatetimeConfigurableItem implements LogItem<RoutingContext> {
/**
* all configuration is set to default value.
*/
- public DatetimeConfigurableItem() {
+ public DatetimeConfigurableItemAccess() {
this(DEFAULT_DATETIME_PATTERN);
}
@@ -57,7 +57,7 @@ public class DatetimeConfigurableItem implements LogItem<RoutingContext> {
* the configurations not specified will get a default value.
* @param config the format of configuration is "PATTERN|TIMEZONE|LOCALE" or "PATTERN". It depends on whether the config contains the separator "|"
*/
- public DatetimeConfigurableItem(String config) {
+ public DatetimeConfigurableItemAccess(String config) {
String[] configArr = null;
if (config.contains("|")) {
configArr = splitConfig(config);
@@ -85,12 +85,12 @@ public class DatetimeConfigurableItem implements LogItem<RoutingContext> {
}
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
doAppendFormattedItem(accessLogEvent.getMilliStartTime(), builder);
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
long milliDuration = (finishEvent.getInvocation().getInvocationStageTrace().getStartSend() -
finishEvent.getInvocation().getInvocationStageTrace().getStart()) / 1000_000;
doAppendFormattedItem(
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/DurationMillisecondItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondItemAccess.java
similarity index 74%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/DurationMillisecondItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondItemAccess.java
index c272208..10e9f1e 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/DurationMillisecondItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondItemAccess.java
@@ -15,22 +15,22 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import io.vertx.ext.web.RoutingContext;
-public class DurationMillisecondItem implements LogItem<RoutingContext> {
+public class DurationMillisecondItemAccess implements AccessLogItem<RoutingContext> {
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
builder.append(accessLogEvent.getMilliEndTime() - accessLogEvent.getMilliStartTime());
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
builder.append((finishEvent.getInvocation().getInvocationStageTrace().getFinish() -
finishEvent.getInvocation().getInvocationStageTrace().getStartSend()) / 1000_000);
}
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/DurationSecondItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationSecondItemAccess.java
similarity index 69%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/DurationSecondItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationSecondItemAccess.java
index c468703..def9eea 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/DurationSecondItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationSecondItemAccess.java
@@ -15,25 +15,25 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import io.vertx.ext.web.RoutingContext;
-public class DurationSecondItem implements LogItem<RoutingContext> {
+public class DurationSecondItemAccess implements AccessLogItem<RoutingContext> {
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
builder.append((accessLogEvent.getMilliEndTime() - accessLogEvent.getMilliStartTime()) / 1000);
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
builder.append((finishEvent.getInvocation().getInvocationStageTrace().getFinish() -
- finishEvent.getInvocation().getInvocationStageTrace().getStartSend()) / 1000_000_000);
+ finishEvent.getInvocation().getInvocationStageTrace().getStartSend()) / 1000_000_000);
}
}
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/FirstLineOfRequestItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/FirstLineOfRequestItemAccess.java
similarity index 51%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/FirstLineOfRequestItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/FirstLineOfRequestItemAccess.java
index 0f504ad..95b7831 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/FirstLineOfRequestItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/FirstLineOfRequestItemAccess.java
@@ -15,40 +15,40 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import io.vertx.ext.web.RoutingContext;
-public class FirstLineOfRequestItem implements LogItem<RoutingContext> {
- private static final HttpMethodItem METHOD_ELEMENT = new HttpMethodItem();
+public class FirstLineOfRequestItemAccess implements AccessLogItem<RoutingContext> {
+ private static final HttpMethodItemAccess METHOD_ELEMENT = new HttpMethodItemAccess();
- private static final UrlPathItem URI_PATH_ONLY_ELEMENT = new UrlPathItem();
+ private static final UrlPathItemAccess URI_PATH_ONLY_ELEMENT = new UrlPathItemAccess();
- private static final RequestProtocolItem VERSION_OR_PROTOCOL_ELEMENT = new RequestProtocolItem();
+ private static final RequestProtocolItemAccess VERSION_OR_PROTOCOL_ELEMENT = new RequestProtocolItemAccess();
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
builder.append("\"");
- METHOD_ELEMENT.appendFormattedItem(accessLogEvent, builder);
+ METHOD_ELEMENT.appendServerFormattedItem(accessLogEvent, builder);
builder.append(" ");
- URI_PATH_ONLY_ELEMENT.appendFormattedItem(accessLogEvent, builder);
+ URI_PATH_ONLY_ELEMENT.appendServerFormattedItem(accessLogEvent, builder);
builder.append(" ");
- VERSION_OR_PROTOCOL_ELEMENT.appendFormattedItem(accessLogEvent, builder);
+ VERSION_OR_PROTOCOL_ELEMENT.appendServerFormattedItem(accessLogEvent, builder);
builder.append("\"");
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
builder.append("\"");
- METHOD_ELEMENT.appendFormattedItem(finishEvent, builder);
+ METHOD_ELEMENT.appendClientFormattedItem(finishEvent, builder);
builder.append(" ");
- URI_PATH_ONLY_ELEMENT.appendFormattedItem(finishEvent, builder);
+ URI_PATH_ONLY_ELEMENT.appendClientFormattedItem(finishEvent, builder);
builder.append(" ");
- VERSION_OR_PROTOCOL_ELEMENT.appendFormattedItem(finishEvent, builder);
+ VERSION_OR_PROTOCOL_ELEMENT.appendClientFormattedItem(finishEvent, builder);
builder.append("\"");
}
}
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/HttpMethodItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpMethodItemAccess.java
similarity index 84%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/HttpMethodItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpMethodItemAccess.java
index 521d770..021cb4d 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/HttpMethodItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpMethodItemAccess.java
@@ -15,16 +15,16 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import org.apache.commons.lang3.StringUtils;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.common.rest.RestConst;
import org.apache.servicecomb.common.rest.codec.param.RestClientRequestImpl;
import org.apache.servicecomb.core.definition.OperationMeta;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.ext.web.RoutingContext;
@@ -32,12 +32,12 @@ import io.vertx.ext.web.RoutingContext;
/**
* HTTP method
*/
-public class HttpMethodItem implements LogItem<RoutingContext> {
+public class HttpMethodItemAccess implements AccessLogItem<RoutingContext> {
public static final String EMPTY_RESULT = "-";
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
HttpServerRequest request = accessLogEvent.getRoutingContext().request();
if (null == request || null == request.method()) {
builder.append(EMPTY_RESULT);
@@ -47,7 +47,7 @@ public class HttpMethodItem implements LogItem<RoutingContext> {
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
OperationMeta operationMeta = finishEvent.getInvocation().getOperationMeta();
if (operationMeta != null && !StringUtils.isEmpty(operationMeta.getHttpMethod())) {
builder.append(operationMeta.getHttpMethod());
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/HttpStatusItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpStatusItemAccess.java
similarity index 81%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/HttpStatusItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpStatusItemAccess.java
index 4d7cf70..67fe458 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/HttpStatusItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpStatusItemAccess.java
@@ -15,11 +15,11 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import org.apache.servicecomb.swagger.invocation.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -27,13 +27,13 @@ import org.slf4j.LoggerFactory;
import io.vertx.core.http.HttpServerResponse;
import io.vertx.ext.web.RoutingContext;
-public class HttpStatusItem implements LogItem<RoutingContext> {
- private static Logger LOGGER = LoggerFactory.getLogger(HttpStatusItem.class);
+public class HttpStatusItemAccess implements AccessLogItem<RoutingContext> {
+ private static Logger LOGGER = LoggerFactory.getLogger(HttpStatusItemAccess.class);
public static final String EMPTY_RESULT = "-";
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
HttpServerResponse response = accessLogEvent.getRoutingContext().response();
if (null == response) {
builder.append(EMPTY_RESULT);
@@ -50,7 +50,7 @@ public class HttpStatusItem implements LogItem<RoutingContext> {
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
Response response = finishEvent.getResponse();
if (null == response) {
builder.append(EMPTY_RESULT);
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/InvocationContextItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/InvocationContextItemAccess.java
similarity index 82%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/InvocationContextItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/InvocationContextItemAccess.java
index 483faff..b96131f 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/InvocationContextItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/InvocationContextItemAccess.java
@@ -15,31 +15,31 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import java.util.Map;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.common.rest.RestConst;
import org.apache.servicecomb.core.Invocation;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import org.springframework.util.StringUtils;
import io.vertx.ext.web.RoutingContext;
-public class InvocationContextItem implements LogItem<RoutingContext> {
+public class InvocationContextItemAccess implements AccessLogItem<RoutingContext> {
public static final String NOT_FOUND = "-";
String varName;
- public InvocationContextItem(String varName) {
+ public InvocationContextItemAccess(String varName) {
this.varName = varName;
}
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
String invocationContextValue = getValueFromInvocationContext(accessLogEvent);
if (StringUtils.isEmpty(invocationContextValue)) {
builder.append(NOT_FOUND);
@@ -49,7 +49,7 @@ public class InvocationContextItem implements LogItem<RoutingContext> {
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
Invocation invocation = finishEvent.getInvocation();
if (null == invocation || invocation.getContext() == null
|| StringUtils.isEmpty(finishEvent.getInvocation().getContext().get(varName))) {
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/LocalHostItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalHostItemAccess.java
similarity index 55%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/LocalHostItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalHostItemAccess.java
index b62f07d..8581e2a 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/LocalHostItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalHostItemAccess.java
@@ -15,23 +15,24 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
+import org.apache.servicecomb.common.rest.RestConst;
+import org.apache.servicecomb.common.rest.codec.param.RestClientRequestImpl;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
-import org.springframework.util.StringUtils;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.ext.web.RoutingContext;
-public class LocalHostItem implements LogItem<RoutingContext> {
-
+public class LocalHostItemAccess implements AccessLogItem<RoutingContext> {
public static final String EMPTY_RESULT = "-";
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
builder.append(accessLogEvent.getLocalAddress());
}
@@ -39,8 +40,17 @@ public class LocalHostItem implements LogItem<RoutingContext> {
* client do not need localhost
*/
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
- builder.append(EMPTY_RESULT);
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ RestClientRequestImpl restRequestImpl = (RestClientRequestImpl) finishEvent.getInvocation().getHandlerContext()
+ .get(RestConst.INVOCATION_HANDLER_REQUESTCLIENT);
+ if (null == restRequestImpl || null == restRequestImpl.getRequest()
+ || null == restRequestImpl.getRequest().connection()
+ || null == restRequestImpl.getRequest().connection().localAddress()
+ || StringUtils.isEmpty(restRequestImpl.getRequest().connection().localAddress().host())) {
+ builder.append(EMPTY_RESULT);
+ return;
+ }
+ builder.append(restRequestImpl.getRequest().connection().localAddress().host());
}
public static String getLocalAddress(RoutingContext context) {
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/LocalPortItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalPortItemAccess.java
similarity index 55%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/LocalPortItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalPortItemAccess.java
index e78c192..38b7ca8 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/LocalPortItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalPortItemAccess.java
@@ -15,22 +15,24 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
+import org.apache.servicecomb.common.rest.RestConst;
+import org.apache.servicecomb.common.rest.codec.param.RestClientRequestImpl;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.ext.web.RoutingContext;
-public class LocalPortItem implements LogItem<RoutingContext> {
+public class LocalPortItemAccess implements AccessLogItem<RoutingContext> {
public static final String EMPTY_RESULT = "-";
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
HttpServerRequest request = accessLogEvent.getRoutingContext().request();
if (null == request || null == request.localAddress()) {
builder.append(EMPTY_RESULT);
@@ -39,9 +41,16 @@ public class LocalPortItem implements LogItem<RoutingContext> {
builder.append(request.localAddress().port());
}
- // client do not need local port
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
- builder.append(EMPTY_RESULT);
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ RestClientRequestImpl restRequestImpl = (RestClientRequestImpl) finishEvent.getInvocation().getHandlerContext()
+ .get(RestConst.INVOCATION_HANDLER_REQUESTCLIENT);
+ if (null == restRequestImpl || null == restRequestImpl.getRequest()
+ || null == restRequestImpl.getRequest().connection()
+ || null == restRequestImpl.getRequest().connection().localAddress()) {
+ builder.append(EMPTY_RESULT);
+ return;
+ }
+ builder.append(restRequestImpl.getRequest().connection().localAddress().port());
}
}
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/PlainTextItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/PlainTextItemAccess.java
similarity index 71%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/PlainTextItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/PlainTextItemAccess.java
index 88d99a8..ff8d56b 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/PlainTextItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/PlainTextItemAccess.java
@@ -15,32 +15,32 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import io.vertx.ext.web.RoutingContext;
/**
* Print content as it is.
*/
-public class PlainTextItem implements LogItem<RoutingContext> {
+public class PlainTextItemAccess implements AccessLogItem<RoutingContext> {
private final String content;
- public PlainTextItem(String content) {
+ public PlainTextItemAccess(String content) {
this.content = content;
}
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
builder.append(content);
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
builder.append(content);
}
}
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/QueryStringItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/QueryStringItemAccess.java
similarity index 79%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/QueryStringItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/QueryStringItemAccess.java
index b20ea8a..171697a 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/QueryStringItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/QueryStringItemAccess.java
@@ -15,24 +15,23 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import org.apache.commons.lang3.StringUtils;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.common.rest.RestConst;
import org.apache.servicecomb.common.rest.codec.param.RestClientRequestImpl;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.ext.web.RoutingContext;
-public class QueryStringItem implements LogItem<RoutingContext> {
-
+public class QueryStringItemAccess implements AccessLogItem<RoutingContext> {
public static final String EMPTY_RESULT = "-";
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
HttpServerRequest request = accessLogEvent.getRoutingContext().request();
if (null == request || StringUtils.isEmpty(request.query())) {
builder.append(EMPTY_RESULT);
@@ -42,9 +41,9 @@ public class QueryStringItem implements LogItem<RoutingContext> {
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
RestClientRequestImpl restRequestImpl = (RestClientRequestImpl) finishEvent.getInvocation().getHandlerContext()
- .get(RestConst.INVOCATION_HANDLER_REQUESTCLIENT);
+ .get(RestConst.INVOCATION_HANDLER_REQUESTCLIENT);
if (null == restRequestImpl || null == restRequestImpl.getRequest()
|| StringUtils.isEmpty(restRequestImpl.getRequest().query())) {
builder.append(EMPTY_RESULT);
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/RemoteHostItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/RemoteHostItemAccess.java
similarity index 82%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/RemoteHostItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/RemoteHostItemAccess.java
index a53152b..6b21bac 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/RemoteHostItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/RemoteHostItemAccess.java
@@ -15,24 +15,24 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import org.apache.commons.lang3.StringUtils;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.core.Endpoint;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
import org.apache.servicecomb.foundation.common.net.URIEndpointObject;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.ext.web.RoutingContext;
-public class RemoteHostItem implements LogItem<RoutingContext> {
+public class RemoteHostItemAccess implements AccessLogItem<RoutingContext> {
public static final String EMPTY_RESULT = "-";
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
HttpServerRequest request = accessLogEvent.getRoutingContext().request();
if (null == request || null == request.remoteAddress()
|| StringUtils.isEmpty(request.remoteAddress().host())) {
@@ -43,7 +43,7 @@ public class RemoteHostItem implements LogItem<RoutingContext> {
}
@Override
- public void appendFormattedItem(InvocationFinishEvent clientLogEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent clientLogEvent, StringBuilder builder) {
Endpoint endpoint = clientLogEvent.getInvocation().getEndpoint();
if (null == endpoint || null == endpoint.getAddress()
|| StringUtils.isEmpty(((URIEndpointObject) endpoint.getAddress()).getHostOrIp())) {
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/RequestHeaderItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestHeaderItemAccess.java
similarity index 81%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/RequestHeaderItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestHeaderItemAccess.java
index 305493e..fb05527 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/RequestHeaderItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestHeaderItemAccess.java
@@ -15,30 +15,29 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.common.rest.RestConst;
import org.apache.servicecomb.common.rest.codec.param.RestClientRequestImpl;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import org.springframework.util.StringUtils;
import io.vertx.core.MultiMap;
import io.vertx.ext.web.RoutingContext;
-public class RequestHeaderItem implements LogItem<RoutingContext> {
-
+public class RequestHeaderItemAccess implements AccessLogItem<RoutingContext> {
public static final String RESULT_NOT_FOUND = "-";
private final String varName;
- public RequestHeaderItem(String varName) {
+ public RequestHeaderItemAccess(String varName) {
this.varName = varName;
}
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
MultiMap headers = accessLogEvent.getRoutingContext().request().headers();
if (null == headers || StringUtils.isEmpty(headers.get(varName))) {
builder.append(RESULT_NOT_FOUND);
@@ -48,7 +47,7 @@ public class RequestHeaderItem implements LogItem<RoutingContext> {
}
@Override
- public void appendFormattedItem(InvocationFinishEvent clientLogEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent clientLogEvent, StringBuilder builder) {
RestClientRequestImpl restRequestImpl = (RestClientRequestImpl) clientLogEvent.getInvocation().getHandlerContext()
.get(RestConst.INVOCATION_HANDLER_REQUESTCLIENT);
if (null == restRequestImpl || null == restRequestImpl.getRequest()
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/RequestProtocolItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestProtocolItemAccess.java
similarity index 66%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/RequestProtocolItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestProtocolItemAccess.java
index 22d9216..39be17c 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/RequestProtocolItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestProtocolItemAccess.java
@@ -15,25 +15,24 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
-import org.apache.servicecomb.core.Endpoint;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
+import org.apache.servicecomb.core.Invocation;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
import org.apache.servicecomb.foundation.common.net.URIEndpointObject;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.core.http.HttpVersion;
import io.vertx.ext.web.RoutingContext;
-public class RequestProtocolItem implements LogItem<RoutingContext> {
-
+public class RequestProtocolItemAccess implements AccessLogItem<RoutingContext> {
public static final String EMPTY_RESULT = "-";
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
HttpServerRequest request = accessLogEvent.getRoutingContext().request();
if (null == request || null == request.version()) {
builder.append(EMPTY_RESULT);
@@ -43,13 +42,15 @@ public class RequestProtocolItem implements LogItem<RoutingContext> {
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
- Endpoint endpoint = finishEvent.getInvocation().getEndpoint();
- if (endpoint == null || endpoint.getAddress() == null) {
- builder.append(EMPTY_RESULT);
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ Invocation invocation = finishEvent.getInvocation();
+ if (invocation == null || null == invocation.getEndpoint() || null == invocation.getEndpoint().getAddress()
+ || !(invocation.getEndpoint().getAddress() instanceof URIEndpointObject)
+ || !((URIEndpointObject) invocation.getEndpoint().getAddress()).isHttp2Enabled()) {
+ builder.append("HTTP/1.1");
return;
}
- builder.append(((URIEndpointObject) endpoint.getAddress()).isSslEnabled() ? "HTTPS" : "HTTP");
+ builder.append("HTTP/2.0");
}
private String getStringVersion(HttpVersion version) {
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/ResponseHeaderItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseHeaderItemAccess.java
similarity index 80%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/ResponseHeaderItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseHeaderItemAccess.java
index 8febdfa..35f0d6c 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/ResponseHeaderItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseHeaderItemAccess.java
@@ -15,29 +15,29 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import org.apache.commons.lang3.StringUtils;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import org.apache.servicecomb.swagger.invocation.Response;
import io.vertx.core.http.HttpServerResponse;
import io.vertx.ext.web.RoutingContext;
-public class ResponseHeaderItem implements LogItem<RoutingContext> {
+public class ResponseHeaderItemAccess implements AccessLogItem<RoutingContext> {
public static final String RESULT_NOT_FOUND = "-";
private final String varName;
- public ResponseHeaderItem(String varName) {
+ public ResponseHeaderItemAccess(String varName) {
this.varName = varName;
}
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
HttpServerResponse response = accessLogEvent.getRoutingContext().response();
if (null == response || null == response.headers() || StringUtils.isEmpty(response.headers().get(varName))) {
builder.append(RESULT_NOT_FOUND);
@@ -47,7 +47,7 @@ public class ResponseHeaderItem implements LogItem<RoutingContext> {
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
Response response = finishEvent.getResponse();
if (null == response || null == response.getHeaders() || null == response.getHeaders().getFirst(varName)) {
builder.append(RESULT_NOT_FOUND);
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/ResponseSizeItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseSizeItemAccess.java
similarity index 76%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/ResponseSizeItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseSizeItemAccess.java
index 1e00309..8337b74 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/ResponseSizeItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseSizeItemAccess.java
@@ -15,25 +15,25 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import io.vertx.core.http.HttpServerResponse;
import io.vertx.ext.web.RoutingContext;
-public class ResponseSizeItem implements LogItem<RoutingContext> {
+public class ResponseSizeItemAccess implements AccessLogItem<RoutingContext> {
// print zeroBytes when bytes is zero
private final String zeroBytes;
- public ResponseSizeItem(String zeroBytesPlaceholder) {
+ public ResponseSizeItemAccess(String zeroBytesPlaceholder) {
zeroBytes = zeroBytesPlaceholder;
}
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
HttpServerResponse response = accessLogEvent.getRoutingContext().response();
if (null == response || 0 == response.bytesWritten()) {
builder.append(zeroBytes);
@@ -43,7 +43,7 @@ public class ResponseSizeItem implements LogItem<RoutingContext> {
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
/**
* client do not know how to calculate is right, maybe Object#toString().length
*/
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/TraceIdItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/TraceIdItemAccess.java
similarity index 78%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/TraceIdItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/TraceIdItemAccess.java
index e1b2761..53a70d0 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/TraceIdItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/TraceIdItemAccess.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import org.apache.commons.lang3.StringUtils;
import org.apache.servicecomb.core.Const;
@@ -23,29 +23,29 @@ import org.apache.servicecomb.core.Invocation;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-public class TraceIdItem extends InvocationContextItem {
+public class TraceIdItemAccess extends InvocationContextItemAccess {
public static final String TRACE_ID = Const.TRACE_ID_NAME;
- public TraceIdItem() {
+ public TraceIdItemAccess() {
super(TRACE_ID);
}
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
String traceId = getValueFromInvocationContext(accessLogEvent);
if (StringUtils.isEmpty(traceId)) {
traceId = accessLogEvent.getRoutingContext().request().getHeader(TRACE_ID);
}
- builder.append(StringUtils.isEmpty(traceId) ? InvocationContextItem.NOT_FOUND : traceId);
+ builder.append(StringUtils.isEmpty(traceId) ? InvocationContextItemAccess.NOT_FOUND : traceId);
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
Invocation invocation = finishEvent.getInvocation();
if (invocation == null || invocation.getContext() == null
|| StringUtils.isEmpty(invocation.getContext().get(TRACE_ID))) {
- builder.append(InvocationContextItem.NOT_FOUND);
+ builder.append(InvocationContextItemAccess.NOT_FOUND);
return;
}
builder.append(invocation.getContext().get(TRACE_ID));
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/TransportItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/TransportItemAccess.java
similarity index 76%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/TransportItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/TransportItemAccess.java
index a72d231..020f029 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/TransportItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/TransportItemAccess.java
@@ -15,27 +15,30 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import org.apache.commons.lang3.StringUtils;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.core.Endpoint;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import io.vertx.ext.web.RoutingContext;
-public class TransportItem implements LogItem<RoutingContext> {
+public class TransportItemAccess implements AccessLogItem<RoutingContext> {
private static final String EMPTY_STR = "-";
+ /**
+ * access log only support rest
+ */
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
- builder.append(EMPTY_STR);
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ builder.append("rest");
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
String transportName = finishEvent.getInvocation().getConfigTransportName();
if (!StringUtils.isEmpty(transportName)) {
builder.append(transportName);
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/UrlPathItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathItemAccess.java
similarity index 85%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/UrlPathItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathItemAccess.java
index bf6b45a..b9e6a23 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/UrlPathItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathItemAccess.java
@@ -15,27 +15,27 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import org.apache.commons.lang3.StringUtils;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.common.rest.RestConst;
import org.apache.servicecomb.common.rest.codec.param.RestClientRequestImpl;
import org.apache.servicecomb.core.definition.OperationMeta;
import org.apache.servicecomb.core.definition.SchemaMeta;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.ext.web.RoutingContext;
-public class UrlPathItem implements LogItem<RoutingContext> {
+public class UrlPathItemAccess implements AccessLogItem<RoutingContext> {
public static final String EMPTY_RESULT = "-";
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
HttpServerRequest request = accessLogEvent.getRoutingContext().request();
if (null == request || StringUtils.isEmpty(request.path())) {
builder.append(EMPTY_RESULT);
@@ -45,7 +45,7 @@ public class UrlPathItem implements LogItem<RoutingContext> {
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
OperationMeta operationMeta = finishEvent.getInvocation().getOperationMeta();
SchemaMeta schemaMeta = finishEvent.getInvocation().getSchemaMeta();
if (operationMeta != null && schemaMeta != null && schemaMeta.getSwagger() != null) {
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/UrlPathWithQueryItem.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathWithQueryItemAccess.java
similarity index 81%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/UrlPathWithQueryItem.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathWithQueryItemAccess.java
index 8465677..23a11f7 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/element/impl/UrlPathWithQueryItem.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathWithQueryItemAccess.java
@@ -15,25 +15,25 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.apache.servicecomb.common.rest.RestConst.REST_CLIENT_REQUEST_PATH;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.core.Invocation;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import org.springframework.util.StringUtils;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.ext.web.RoutingContext;
-public class UrlPathWithQueryItem implements LogItem<RoutingContext> {
+public class UrlPathWithQueryItemAccess implements AccessLogItem<RoutingContext> {
public static final String EMPTY_RESULT = "-";
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
HttpServerRequest request = accessLogEvent.getRoutingContext().request();
if (null == request || StringUtils.isEmpty(request.uri())) {
builder.append(EMPTY_RESULT);
@@ -43,7 +43,7 @@ public class UrlPathWithQueryItem implements LogItem<RoutingContext> {
}
@Override
- public void appendFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent finishEvent, StringBuilder builder) {
Invocation invocation = finishEvent.getInvocation();
if (null == invocation || null == invocation.getLocalContext(REST_CLIENT_REQUEST_PATH)
|| StringUtils.isEmpty(invocation.getLocalContext(REST_CLIENT_REQUEST_PATH).toString())) {
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/LogItemCreator.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/AccessLogItemCreator.java
similarity index 61%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/LogItemCreator.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/AccessLogItemCreator.java
index 7a6f279..238d206 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/LogItemCreator.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/AccessLogItemCreator.java
@@ -15,21 +15,21 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.parser;
+package org.apache.servicecomb.common.accessLog.core.parser;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.CookieItem;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
+import org.apache.servicecomb.common.accessLog.core.element.impl.CookieItemAccess;
/**
- * The {@linkplain LogItemCreator}s are able to instantiate a group of {@linkplain LogItem}.
+ * The {@linkplain AccessLogItemCreator}s are able to instantiate a group of {@linkplain AccessLogItem}.
*/
-public interface LogItemCreator<T> {
+public interface AccessLogItemCreator<T> {
/**
- * Create an instance of {@linkplain LogItem} which is specified by the config.
+ * Create an instance of {@linkplain AccessLogItem} which is specified by the config.
* @param config
- * e.g. For {@linkplain CookieItem CookieItem},
- * the pattern may be "%{varName}C", and it's config is "varName". Some {@linkplain LogItem} with no configurable
+ * e.g. For {@linkplain CookieItemAccess CookieItem},
+ * the pattern may be "%{varName}C", and it's config is "varName". Some {@linkplain AccessLogItem} with no configurable
* pattern (like "%m") will receive {@code null} as config.
*/
- LogItem<T> createItem(String config);
+ AccessLogItem<T> createItem(String config);
}
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/LogItemMeta.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/AccessLogItemMeta.java
similarity index 66%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/LogItemMeta.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/AccessLogItemMeta.java
index c2d6adc..870bd1e 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/LogItemMeta.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/AccessLogItemMeta.java
@@ -15,27 +15,27 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.parser;
+package org.apache.servicecomb.common.accessLog.core.parser;
-public class LogItemMeta<T> {
+public class AccessLogItemMeta<T> {
protected String prefix;
protected String suffix;
/**
- * Used for sorting {@linkplain LogItemMeta}. Default value is 0.
+ * Used for sorting {@linkplain AccessLogItemMeta}. Default value is 0.
* Smaller one has higher priority.
*/
protected int order;
- protected LogItemCreator<T> logItemCreator;
+ protected AccessLogItemCreator<T> accessLogItemCreator;
public String getPrefix() {
return prefix;
}
- public LogItemMeta<T> setPrefix(String prefix) {
+ public AccessLogItemMeta<T> setPrefix(String prefix) {
this.prefix = prefix;
return this;
}
@@ -44,7 +44,7 @@ public class LogItemMeta<T> {
return suffix;
}
- public LogItemMeta<T> setSuffix(String suffix) {
+ public AccessLogItemMeta<T> setSuffix(String suffix) {
this.suffix = suffix;
return this;
}
@@ -53,17 +53,17 @@ public class LogItemMeta<T> {
return order;
}
- public LogItemMeta<T> setOrder(int order) {
+ public AccessLogItemMeta<T> setOrder(int order) {
this.order = order;
return this;
}
- public LogItemCreator<T> getLogItemCreator() {
- return logItemCreator;
+ public AccessLogItemCreator<T> getAccessLogItemCreator() {
+ return accessLogItemCreator;
}
- public LogItemMeta<T> setLogItemCreator(LogItemCreator<T> logItemCreator) {
- this.logItemCreator = logItemCreator;
+ public AccessLogItemMeta<T> setAccessLogItemCreator(AccessLogItemCreator<T> accessLogItemCreator) {
+ this.accessLogItemCreator = accessLogItemCreator;
return this;
}
}
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/LogPatternParser.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/AccessLogPatternParser.java
similarity index 68%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/LogPatternParser.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/AccessLogPatternParser.java
index 3adb8b2..0dde409 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/LogPatternParser.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/AccessLogPatternParser.java
@@ -15,20 +15,21 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.parser;
+package org.apache.servicecomb.common.accessLog.core.parser;
import java.util.List;
-import org.apache.servicecomb.foundation.log.core.LogGenerator;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
+import org.apache.servicecomb.common.accessLog.core.AccessLogGenerator;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
+
/**
- * This parser will parse the rawPattern of access log and generate a list of {@link LogItem},
- * which will be used in {@link LogGenerator} to generate
+ * This parser will parse the rawPattern of access log and generate a list of {@link AccessLogItem},
+ * which will be used in {@link AccessLogGenerator} to generate
* access log content.
- * @param <T> the type of {@linkplain LogItem
+ * @param <T> the type of {@linkplain AccessLogItem
* AccessLogParam.contextData}, which usually depends on the transport way.
*/
-public interface LogPatternParser<T> {
- List<LogItem<T>> parsePattern(String rawPattern);
+public interface AccessLogPatternParser<T> {
+ List<AccessLogItem<T>> parsePattern(String rawPattern);
}
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/CompositeVertxRestLogItemMeta.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/CompositeVertxRestAccessLogItemMeta.java
similarity index 78%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/CompositeVertxRestLogItemMeta.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/CompositeVertxRestAccessLogItemMeta.java
index 3cb707d..f360847 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/CompositeVertxRestLogItemMeta.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/CompositeVertxRestAccessLogItemMeta.java
@@ -15,17 +15,17 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.parser;
+package org.apache.servicecomb.common.accessLog.core.parser;
import java.util.List;
/**
- * Hold a group of {@link VertxRestLogItemMeta} so that user can define
+ * Hold a group of {@link VertxRestAccessLogItemMeta} so that user can define
* only one VertxRestAccessLogItemMeta in spi loading file and load a group of meta.
*
* Once the access log loading mechanism finds that a meta is CompositeVertxRestAccessLogItemMeta,
* the meta hold by it will be used in access log while this meta itself will be ignored.
*/
-public abstract class CompositeVertxRestLogItemMeta extends VertxRestLogItemMeta {
- public abstract List<VertxRestLogItemMeta> getAccessLogItemMetas();
+public abstract class CompositeVertxRestAccessLogItemMeta extends VertxRestAccessLogItemMeta {
+ public abstract List<VertxRestAccessLogItemMeta> getAccessLogItemMetas();
}
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/VertxRestLogItemMeta.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/VertxRestAccessLogItemMeta.java
similarity index 57%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/VertxRestLogItemMeta.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/VertxRestAccessLogItemMeta.java
index 588abe3..b69b90a 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/VertxRestLogItemMeta.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/VertxRestAccessLogItemMeta.java
@@ -15,31 +15,31 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.parser;
+package org.apache.servicecomb.common.accessLog.core.parser;
import io.vertx.ext.web.RoutingContext;
/**
* For vertx-rest transport way.
*/
-public class VertxRestLogItemMeta extends LogItemMeta<RoutingContext> {
- public VertxRestLogItemMeta() {
+public class VertxRestAccessLogItemMeta extends AccessLogItemMeta<RoutingContext> {
+ public VertxRestAccessLogItemMeta() {
}
- public VertxRestLogItemMeta(String prefix, String suffix,
- LogItemCreator<RoutingContext> logItemCreator, int order) {
+ public VertxRestAccessLogItemMeta(String prefix, String suffix,
+ AccessLogItemCreator<RoutingContext> accessLogItemCreator, int order) {
this.prefix = prefix;
this.suffix = suffix;
- this.logItemCreator = logItemCreator;
+ this.accessLogItemCreator = accessLogItemCreator;
this.order = order;
}
- public VertxRestLogItemMeta(String prefix, LogItemCreator<RoutingContext> logItemCreator) {
- this(prefix, null, logItemCreator, 0);
+ public VertxRestAccessLogItemMeta(String prefix, AccessLogItemCreator<RoutingContext> accessLogItemCreator) {
+ this(prefix, null, accessLogItemCreator, 0);
}
- public VertxRestLogItemMeta(String prefix, String suffix,
- LogItemCreator<RoutingContext> logItemCreator) {
- this(prefix, suffix, logItemCreator, 0);
+ public VertxRestAccessLogItemMeta(String prefix, String suffix,
+ AccessLogItemCreator<RoutingContext> accessLogItemCreator) {
+ this(prefix, suffix, accessLogItemCreator, 0);
}
}
diff --git a/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/impl/DefaultCompositeVertxRestAccessLogItemMeta.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/impl/DefaultCompositeVertxRestAccessLogItemMeta.java
new file mode 100644
index 0000000..8585639
--- /dev/null
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/impl/DefaultCompositeVertxRestAccessLogItemMeta.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.common.accessLog.core.parser.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
+import org.apache.servicecomb.common.accessLog.core.element.impl.CookieItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.DatetimeConfigurableItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.DurationMillisecondItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.DurationSecondItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.FirstLineOfRequestItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.HttpMethodItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.HttpStatusItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.InvocationContextItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.LocalHostItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.LocalPortItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.QueryStringItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.RemoteHostItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.RequestHeaderItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.RequestProtocolItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.ResponseHeaderItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.ResponseSizeItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.TraceIdItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.TransportItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.UrlPathItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.UrlPathWithQueryItemAccess;
+import org.apache.servicecomb.common.accessLog.core.parser.CompositeVertxRestAccessLogItemMeta;
+import org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta;
+
+import io.vertx.ext.web.RoutingContext;
+
+public class DefaultCompositeVertxRestAccessLogItemMeta extends CompositeVertxRestAccessLogItemMeta {
+ private static final List<VertxRestAccessLogItemMeta> SUPPORTED_META = new ArrayList<>();
+
+ static {
+ final AccessLogItem<RoutingContext> httpMethodItem = new HttpMethodItemAccess();
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%m", config -> httpMethodItem));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("cs-method", config -> httpMethodItem));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%s", config -> new HttpStatusItemAccess()));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("sc-status", config -> new HttpStatusItemAccess()));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%T", config -> new DurationSecondItemAccess()));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%D", config -> new DurationMillisecondItemAccess()));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%h", config -> new RemoteHostItemAccess()));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%v", config -> new LocalHostItemAccess()));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%p", config -> new LocalPortItemAccess()));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%B", config -> new ResponseSizeItemAccess("0")));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%b", config -> new ResponseSizeItemAccess("-")));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%r", config -> new FirstLineOfRequestItemAccess()));
+ final AccessLogItem<RoutingContext> urlPathItem = new UrlPathItemAccess();
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%U", config -> urlPathItem));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("cs-uri-stem", config -> urlPathItem));
+ final AccessLogItem<RoutingContext> queryStringItem = new QueryStringItemAccess();
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%q", config -> queryStringItem));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("cs-uri-query", config -> queryStringItem));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("cs-uri", config -> new UrlPathWithQueryItemAccess()));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%H", config -> new RequestProtocolItemAccess()));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%t", config -> new DatetimeConfigurableItemAccess()));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%SCB-traceId", config -> new TraceIdItemAccess()));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%SCB-transport", config -> new TransportItemAccess()));
+
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%{", "}t", DatetimeConfigurableItemAccess::new));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%{", "}i", RequestHeaderItemAccess::new));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%{", "}o", ResponseHeaderItemAccess::new));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%{", "}C", CookieItemAccess::new));
+ SUPPORTED_META.add(new VertxRestAccessLogItemMeta("%{", "}SCB-ctx", InvocationContextItemAccess::new));
+ }
+
+ @Override
+ public List<VertxRestAccessLogItemMeta> getAccessLogItemMetas() {
+ return SUPPORTED_META;
+ }
+}
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/impl/VertxRestLogPatternParser.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/impl/VertxRestAccessLogPatternParser.java
similarity index 76%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/impl/VertxRestLogPatternParser.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/impl/VertxRestAccessLogPatternParser.java
index c077d76..02d97a9 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/impl/VertxRestLogPatternParser.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/parser/impl/VertxRestAccessLogPatternParser.java
@@ -15,20 +15,20 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.parser.impl;
+package org.apache.servicecomb.common.accessLog.core.parser.impl;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
+import org.apache.servicecomb.common.accessLog.core.element.impl.PlainTextItemAccess;
+import org.apache.servicecomb.common.accessLog.core.parser.AccessLogItemMeta;
+import org.apache.servicecomb.common.accessLog.core.parser.AccessLogPatternParser;
+import org.apache.servicecomb.common.accessLog.core.parser.CompositeVertxRestAccessLogItemMeta;
+import org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta;
import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.PlainTextItem;
-import org.apache.servicecomb.foundation.log.core.parser.CompositeVertxRestLogItemMeta;
-import org.apache.servicecomb.foundation.log.core.parser.LogItemMeta;
-import org.apache.servicecomb.foundation.log.core.parser.LogPatternParser;
-import org.apache.servicecomb.foundation.log.core.parser.VertxRestLogItemMeta;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -37,10 +37,10 @@ import io.vertx.ext.web.RoutingContext;
/**
* The parser is used for rest-over-vertx transport.
*/
-public class VertxRestLogPatternParser implements LogPatternParser<RoutingContext> {
- private static final Logger LOGGER = LoggerFactory.getLogger(VertxRestLogPatternParser.class);
+public class VertxRestAccessLogPatternParser implements AccessLogPatternParser<RoutingContext> {
+ private static final Logger LOGGER = LoggerFactory.getLogger(VertxRestAccessLogPatternParser.class);
- public static final Comparator<VertxRestLogItemMeta> accessLogItemMetaComparator = (m1, m2) -> {
+ public static final Comparator<VertxRestAccessLogItemMeta> accessLogItemMetaComparator = (m1, m2) -> {
int result = m1.getOrder() - m2.getOrder();
if (result != 0) {
return result;
@@ -60,17 +60,17 @@ public class VertxRestLogPatternParser implements LogPatternParser<RoutingContex
: result;
};
- private List<VertxRestLogItemMeta> metaList = new ArrayList<>();
+ private List<VertxRestAccessLogItemMeta> metaList = new ArrayList<>();
- public VertxRestLogPatternParser() {
- List<VertxRestLogItemMeta> loadedMeta = loadVertxRestLogItemMeta();
+ public VertxRestAccessLogPatternParser() {
+ List<VertxRestAccessLogItemMeta> loadedMeta = loadVertxRestLogItemMeta();
if (null == loadedMeta || loadedMeta.isEmpty()) {
LOGGER.error("cannot load AccessLogItemMeta!");
throw new IllegalStateException("cannot load AccessLogItemMeta!");
}
- for (VertxRestLogItemMeta meta : loadedMeta) {
- if (CompositeVertxRestLogItemMeta.class.isAssignableFrom(meta.getClass())) {
- this.metaList.addAll(((CompositeVertxRestLogItemMeta) meta).getAccessLogItemMetas());
+ for (VertxRestAccessLogItemMeta meta : loadedMeta) {
+ if (CompositeVertxRestAccessLogItemMeta.class.isAssignableFrom(meta.getClass())) {
+ this.metaList.addAll(((CompositeVertxRestAccessLogItemMeta) meta).getAccessLogItemMetas());
} else {
this.metaList.add(meta);
}
@@ -78,8 +78,8 @@ public class VertxRestLogPatternParser implements LogPatternParser<RoutingContex
sortAccessLogItemMeta(this.metaList);
}
- private List<VertxRestLogItemMeta> loadVertxRestLogItemMeta() {
- return SPIServiceUtils.getOrLoadSortedService(VertxRestLogItemMeta.class);
+ private List<VertxRestAccessLogItemMeta> loadVertxRestLogItemMeta() {
+ return SPIServiceUtils.getOrLoadSortedService(VertxRestAccessLogItemMeta.class);
}
/**
@@ -104,17 +104,17 @@ public class VertxRestLogPatternParser implements LogPatternParser<RoutingContex
}
/**
- * Sort all of the {@link LogItemMeta}, the meta that is in front of the others has higher priority.
- *
+ * Sort all of the {@link AccessLogItemMeta}, the meta that is in front of the others has higher priority.
+ *
* Sort rule(priority decreased):
* <ol>
- * <li>compare the {@link LogItemMeta#getOrder()}</li>
- * <li>compare the {@link LogItemMeta#getSuffix()} in lexicographic order, if one's suffix is start with
+ * <li>compare the {@link AccessLogItemMeta#getOrder()}</li>
+ * <li>compare the {@link AccessLogItemMeta#getSuffix()} in lexicographic order, if one's suffix is start with
* the other one's suffix, this one(who's suffix is longer) has higher priority</li>
- * <li>compare the {@link LogItemMeta#getPrefix()}, compare rule is the same as suffix.</li>
+ * <li>compare the {@link AccessLogItemMeta#getPrefix()}, compare rule is the same as suffix.</li>
* </ol>
*
- * e.g. given a list of {@link LogItemMeta} like below:
+ * e.g. given a list of {@link AccessLogItemMeta} like below:
* <ol>
* <li>(%ac{,}bcd)</li>
* <li>(%ac{,}bc)</li>
@@ -137,16 +137,16 @@ public class VertxRestLogPatternParser implements LogPatternParser<RoutingContex
* <li>(%b,)</li>
* </ol>
*/
- public static void sortAccessLogItemMeta(List<VertxRestLogItemMeta> accessLogItemMetaList) {
+ public static void sortAccessLogItemMeta(List<VertxRestAccessLogItemMeta> accessLogItemMetaList) {
accessLogItemMetaList.sort(accessLogItemMetaComparator);
}
/**
* @param rawPattern The access log pattern string specified by users.
- * @return A list of {@linkplain LogItem} which actually generate the content of access log.
+ * @return A list of {@linkplain AccessLogItem} which actually generate the content of access log.
*/
@Override
- public List<LogItem<RoutingContext>> parsePattern(String rawPattern) {
+ public List<AccessLogItem<RoutingContext>> parsePattern(String rawPattern) {
LOGGER.info("parse the pattern of access log: [{}]", rawPattern);
List<AccessLogItemLocation> locationList = matchAccessLogItem(rawPattern);
locationList = fillInPlainTextLocation(rawPattern, locationList);
@@ -164,7 +164,7 @@ public class VertxRestLogPatternParser implements LogPatternParser<RoutingContex
int cursor = 0;
while (cursor < rawPattern.length()) {
AccessLogItemLocation candidate = null;
- for (VertxRestLogItemMeta meta : metaList) {
+ for (VertxRestAccessLogItemMeta meta : metaList) {
if (null != candidate && null == meta.getSuffix()) {
// TODO:
// if user define item("%{","}ab") and item("%{_","}abc") and the pattern is "%{_var}ab}abc"
@@ -209,12 +209,12 @@ public class VertxRestLogPatternParser implements LogPatternParser<RoutingContex
}
/**
- * After processing of {@link #matchAccessLogItem(String)}, all of the placeholders of {@link LogItem} have been
+ * After processing of {@link #matchAccessLogItem(String)}, all of the placeholders of {@link AccessLogItem} have been
* picked out. So the rest part of rawPattern should be treated as plain text. Those parts will be located in this
- * method and wrapped as {@link PlainTextItem}.
+ * method and wrapped as {@link PlainTextItemAccess}.
* @param rawPattern raw pattern string of access log
* @param locationList locations picked out by {@link #matchAccessLogItem(String)}
- * @return all of the locations including {@link PlainTextItem}.
+ * @return all of the locations including {@link PlainTextItemAccess}.
*/
private List<AccessLogItemLocation> fillInPlainTextLocation(String rawPattern,
List<AccessLogItemLocation> locationList) {
@@ -252,23 +252,22 @@ public class VertxRestLogPatternParser implements LogPatternParser<RoutingContex
return new AccessLogItemLocation(front, rear);
}
- private List<LogItem<RoutingContext>> convertToItemList(String rawPattern,
+ private List<AccessLogItem<RoutingContext>> convertToItemList(String rawPattern,
List<AccessLogItemLocation> locationList) {
- List<LogItem<RoutingContext>> itemList = new ArrayList<>();
+ List<AccessLogItem<RoutingContext>> itemList = new ArrayList<>();
for (AccessLogItemLocation accessLogItemLocation : locationList) {
- VertxRestLogItemMeta accessLogItemMeta = accessLogItemLocation.accessLogItemMeta;
+ VertxRestAccessLogItemMeta accessLogItemMeta = accessLogItemLocation.accessLogItemMeta;
if (null == accessLogItemMeta) {
// a PlainTextItem location
- itemList.add(new PlainTextItem(rawPattern.substring(
+ itemList.add(new PlainTextItemAccess(rawPattern.substring(
accessLogItemLocation.prefixIndex, accessLogItemLocation.tail
)));
continue;
}
- itemList.add(
- accessLogItemMeta.getLogItemCreator().createItem(
- getConfigString(rawPattern, accessLogItemLocation))
+ itemList.add(accessLogItemMeta.getAccessLogItemCreator().createItem(
+ getConfigString(rawPattern, accessLogItemLocation))
);
}
@@ -302,10 +301,10 @@ public class VertxRestLogPatternParser implements LogPatternParser<RoutingContex
*/
int tail;
- VertxRestLogItemMeta accessLogItemMeta;
+ VertxRestAccessLogItemMeta accessLogItemMeta;
/**
- * for {@link PlainTextItem} only
+ * for {@link PlainTextItemAccess} only
*/
AccessLogItemLocation(int prefixIndex, int suffixIndex) {
this.prefixIndex = prefixIndex;
@@ -316,7 +315,7 @@ public class VertxRestLogPatternParser implements LogPatternParser<RoutingContex
/**
* for configurable type AccessLogItem
*/
- AccessLogItemLocation(int prefixIndex, int suffixIndex, VertxRestLogItemMeta accessLogItemMeta) {
+ AccessLogItemLocation(int prefixIndex, int suffixIndex, VertxRestAccessLogItemMeta accessLogItemMeta) {
this.prefixIndex = prefixIndex;
this.suffixIndex = suffixIndex;
this.tail = suffixIndex + accessLogItemMeta.getSuffix().length();
@@ -326,7 +325,7 @@ public class VertxRestLogPatternParser implements LogPatternParser<RoutingContex
/**
* for simple type AccessLogItem
*/
- AccessLogItemLocation(int prefixIndex, VertxRestLogItemMeta accessLogItemMeta) {
+ AccessLogItemLocation(int prefixIndex, VertxRestAccessLogItemMeta accessLogItemMeta) {
this.prefixIndex = prefixIndex;
this.suffixIndex = prefixIndex + accessLogItemMeta.getPrefix().length();
this.tail = this.suffixIndex;
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/placeholder/LogItemTypeEnum.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/placeholder/AccessLogItemTypeEnum.java
similarity index 93%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/placeholder/LogItemTypeEnum.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/placeholder/AccessLogItemTypeEnum.java
index a25762f..5352e37 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/placeholder/LogItemTypeEnum.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/core/placeholder/AccessLogItemTypeEnum.java
@@ -15,12 +15,12 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.placeholder;
+package org.apache.servicecomb.common.accessLog.core.placeholder;
/**
* record what kinds of access log item we support
*/
-public enum LogItemTypeEnum {
+public enum AccessLogItemTypeEnum {
TEXT_PLAIN,
// %m, cs-method
HTTP_METHOD,
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/server/ServerDefaultInitializer.java b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/server/ServerDefaultInitializer.java
similarity index 66%
rename from foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/server/ServerDefaultInitializer.java
rename to common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/server/ServerDefaultInitializer.java
index aec21bb..9b10ac4 100644
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/server/ServerDefaultInitializer.java
+++ b/common/common-access-log/src/main/java/org/apache/servicecomb/common/accessLog/server/ServerDefaultInitializer.java
@@ -15,12 +15,13 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.server;
+package org.apache.servicecomb.common.accessLog.server;
+import org.apache.servicecomb.common.accessLog.AccessLogConfig;
+import org.apache.servicecomb.common.accessLog.AccessLogInitializer;
+import org.apache.servicecomb.common.accessLog.core.AccessLogGenerator;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.LogConfig;
-import org.apache.servicecomb.foundation.log.LogInitializer;
-import org.apache.servicecomb.foundation.log.core.LogGenerator;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -28,24 +29,24 @@ import com.google.common.eventbus.AllowConcurrentEvents;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;
-public class ServerDefaultInitializer implements LogInitializer {
+public class ServerDefaultInitializer implements AccessLogInitializer {
private static Logger LOGGER = LoggerFactory.getLogger("accesslog");
- private LogGenerator logGenerator;
+ private AccessLogGenerator accessLogGenerator;
@Override
- public void init(EventBus eventBus, LogConfig logConfig) {
- if (!logConfig.isServerLogEnabled()) {
+ public void init(EventBus eventBus, AccessLogConfig accessLogConfig) {
+ if (!accessLogConfig.isServerLogEnabled()) {
return;
}
- logGenerator = new LogGenerator(logConfig.getServerLogPattern());
+ accessLogGenerator = new AccessLogGenerator(accessLogConfig.getServerLogPattern());
eventBus.register(this);
}
@Subscribe
@AllowConcurrentEvents
public void onRequestReceived(ServerAccessLogEvent accessLogEvent) {
- LOGGER.info(logGenerator.generateServerLog(accessLogEvent));
+ LOGGER.info(accessLogGenerator.generateServerLog(accessLogEvent));
}
}
diff --git a/foundations/foundation-log/src/main/resources/META-INF/services/org.apache.servicecomb.foundation.log.LogInitializer b/common/common-access-log/src/main/resources/META-INF/services/org.apache.servicecomb.common.accessLog.AccessLogInitializer
similarity index 84%
rename from foundations/foundation-log/src/main/resources/META-INF/services/org.apache.servicecomb.foundation.log.LogInitializer
rename to common/common-access-log/src/main/resources/META-INF/services/org.apache.servicecomb.common.accessLog.AccessLogInitializer
index fd4421f..159849d 100644
--- a/foundations/foundation-log/src/main/resources/META-INF/services/org.apache.servicecomb.foundation.log.LogInitializer
+++ b/common/common-access-log/src/main/resources/META-INF/services/org.apache.servicecomb.common.accessLog.AccessLogInitializer
@@ -15,5 +15,5 @@
# limitations under the License.
#
-org.apache.servicecomb.foundation.log.client.ClientDefaultInitializer
-org.apache.servicecomb.foundation.log.server.ServerDefaultInitializer
+org.apache.servicecomb.common.accessLog.client.ClientDefaultInitializer
+org.apache.servicecomb.common.accessLog.server.ServerDefaultInitializer
diff --git a/foundations/foundation-log/src/main/resources/META-INF/services/org.apache.servicecomb.foundation.log.core.parser.VertxRestLogItemMeta b/common/common-access-log/src/main/resources/META-INF/services/org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta
similarity index 88%
rename from foundations/foundation-log/src/main/resources/META-INF/services/org.apache.servicecomb.foundation.log.core.parser.VertxRestLogItemMeta
rename to common/common-access-log/src/main/resources/META-INF/services/org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta
index 83453b4..78f937b 100644
--- a/foundations/foundation-log/src/main/resources/META-INF/services/org.apache.servicecomb.foundation.log.core.parser.VertxRestLogItemMeta
+++ b/common/common-access-log/src/main/resources/META-INF/services/org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta
@@ -15,4 +15,4 @@
# limitations under the License.
#
-org.apache.servicecomb.foundation.log.core.parser.impl.DefaultCompositeVertxRestLogItemMeta
\ No newline at end of file
+org.apache.servicecomb.common.accessLog.core.parser.impl.DefaultCompositeVertxRestAccessLogItemMeta
\ No newline at end of file
diff --git a/foundations/foundation-log/src/main/resources/META-INF/services/org.apache.servicecomb.core.BootListener b/common/common-access-log/src/main/resources/META-INF/services/org.apache.servicecomb.core.BootListener
similarity index 92%
rename from foundations/foundation-log/src/main/resources/META-INF/services/org.apache.servicecomb.core.BootListener
rename to common/common-access-log/src/main/resources/META-INF/services/org.apache.servicecomb.core.BootListener
index cc656a8..7ab357e 100644
--- a/foundations/foundation-log/src/main/resources/META-INF/services/org.apache.servicecomb.core.BootListener
+++ b/common/common-access-log/src/main/resources/META-INF/services/org.apache.servicecomb.core.BootListener
@@ -15,4 +15,4 @@
# limitations under the License.
#
-org.apache.servicecomb.foundation.log.LogBootListener
\ No newline at end of file
+org.apache.servicecomb.common.accessLog.AccessLogBootListener
\ No newline at end of file
diff --git a/transports/transport-rest/transport-rest-vertx/src/main/resources/config/base/log4j.properties b/common/common-access-log/src/main/resources/config/base/log4j.properties
similarity index 70%
rename from transports/transport-rest/transport-rest-vertx/src/main/resources/config/base/log4j.properties
rename to common/common-access-log/src/main/resources/config/base/log4j.properties
index d19fd97..01fed5b 100644
--- a/transports/transport-rest/transport-rest-vertx/src/main/resources/config/base/log4j.properties
+++ b/common/common-access-log/src/main/resources/config/base/log4j.properties
@@ -17,7 +17,20 @@
# access log default configuration
paas.logs.accesslog.dir=${paas.logs.dir}
+paas.logs.requestlog.dir=${paas.logs.dir}
+
paas.logs.accesslog.file=access.log
+paas.logs.requestlog.file=request.log
+#request log File appender
+log4j.logger.requestlog=INFO,request
+log4j.appender.request=org.apache.servicecomb.foundation.common.utils.RollingFileAppenderExt
+log4j.appender.request.MaxBackupIndex=10
+log4j.appender.request.MaxFileSize=20MB
+log4j.appender.request.file=${paas.logs.requestlog.dir}${paas.logs.requestlog.file}
+log4j.appender.request.layout=org.apache.log4j.PatternLayout
+log4j.appender.request.layout.ConversionPattern=%m%n
+log4j.appender.request.logPermission=rw-------
+log4j.additivity.requestlog=false
# access log File appender
log4j.logger.accesslog=INFO,access
log4j.appender.access=org.apache.servicecomb.foundation.common.utils.RollingFileAppenderExt
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/LogConfigTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/AccessLogConfigTest.java
similarity index 72%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/LogConfigTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/AccessLogConfigTest.java
index 431a800..245b939 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/LogConfigTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/AccessLogConfigTest.java
@@ -15,28 +15,28 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core;
+package org.apache.servicecomb.common.accessLog.core;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
-import org.apache.servicecomb.foundation.log.LogConfig;
+import org.apache.servicecomb.common.accessLog.AccessLogConfig;
import org.junit.Test;
-public class LogConfigTest {
+public class AccessLogConfigTest {
@Test
public void getAccessLogEnabled() {
- boolean serverEnabled = LogConfig.INSTANCE.isServerLogEnabled();
- boolean clientEnabled = LogConfig.INSTANCE.isClientLogEnabled();
+ boolean serverEnabled = AccessLogConfig.INSTANCE.isServerLogEnabled();
+ boolean clientEnabled = AccessLogConfig.INSTANCE.isClientLogEnabled();
assertFalse(serverEnabled);
assertFalse(clientEnabled);
}
@Test
public void getAccesslogPattern() {
- String clientLogPattern = LogConfig.INSTANCE.getClientLogPattern();
- String serverLogPattern = LogConfig.INSTANCE.getServerLogPattern();
+ String clientLogPattern = AccessLogConfig.INSTANCE.getClientLogPattern();
+ String serverLogPattern = AccessLogConfig.INSTANCE.getServerLogPattern();
assertEquals("%h - - %t %r %s %B %D", serverLogPattern);
assertEquals("%h %SCB-transport - - %t %r %s %D", clientLogPattern);
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/LogGeneratorTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/AccessLogGeneratorTest.java
similarity index 65%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/LogGeneratorTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/AccessLogGeneratorTest.java
index 5682f2b..52f62a2 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/LogGeneratorTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/AccessLogGeneratorTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core;
+package org.apache.servicecomb.common.accessLog.core;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
@@ -23,15 +23,18 @@ import static org.mockito.Mockito.when;
import java.text.SimpleDateFormat;
import java.util.TimeZone;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
+import org.apache.servicecomb.common.accessLog.core.element.impl.DatetimeConfigurableItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.HttpMethodItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.PlainTextItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.RemoteHostItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.UserDefinedAccessAccessLogItem;
import org.apache.servicecomb.core.Invocation;
import org.apache.servicecomb.core.definition.OperationMeta;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
import org.apache.servicecomb.core.invocation.InvocationStageTrace;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.DatetimeConfigurableItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.HttpMethodItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.PlainTextItem;
+
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
@@ -41,17 +44,20 @@ import io.vertx.core.http.HttpServerRequest;
import io.vertx.ext.web.RoutingContext;
import mockit.Deencapsulation;
-public class LogGeneratorTest {
+public class AccessLogGeneratorTest {
+
+ private static final AccessLogGenerator LOG_GENERATOR = new AccessLogGenerator("%m - %t");
- private static final LogGenerator LOG_GENERATOR = new LogGenerator("%m - %t");
+ private static final AccessLogGenerator USER_DEFINED_LOG_GENERATOR = new AccessLogGenerator(
+ "%h - - %{test-config}user-defined");
@Test
public void testConstructor() {
- LogItem<RoutingContext>[] elements = Deencapsulation.getField(LOG_GENERATOR, "logItems");
+ AccessLogItem<RoutingContext>[] elements = Deencapsulation.getField(LOG_GENERATOR, "accessLogItems");
assertEquals(3, elements.length);
- assertEquals(HttpMethodItem.class, elements[0].getClass());
- assertEquals(PlainTextItem.class, elements[1].getClass());
- assertEquals(DatetimeConfigurableItem.class, elements[2].getClass());
+ assertEquals(HttpMethodItemAccess.class, elements[0].getClass());
+ assertEquals(PlainTextItemAccess.class, elements[1].getClass());
+ assertEquals(DatetimeConfigurableItemAccess.class, elements[2].getClass());
}
@Test
@@ -61,8 +67,8 @@ public class LogGeneratorTest {
long startMillisecond = 1416863450581L;
ServerAccessLogEvent serverAccessLogEvent = new ServerAccessLogEvent();
serverAccessLogEvent.setMilliStartTime(startMillisecond).setRoutingContext(context);
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DatetimeConfigurableItem.DEFAULT_DATETIME_PATTERN,
- DatetimeConfigurableItem.DEFAULT_LOCALE);
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DatetimeConfigurableItemAccess.DEFAULT_DATETIME_PATTERN,
+ DatetimeConfigurableItemAccess.DEFAULT_LOCALE);
simpleDateFormat.setTimeZone(TimeZone.getDefault());
when(context.request()).thenReturn(request);
@@ -86,11 +92,20 @@ public class LogGeneratorTest {
when(invocation.getInvocationStageTrace()).thenReturn(stageTrace);
InvocationFinishEvent finishEvent = new InvocationFinishEvent(invocation, null);
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DatetimeConfigurableItem.DEFAULT_DATETIME_PATTERN,
- DatetimeConfigurableItem.DEFAULT_LOCALE);
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DatetimeConfigurableItemAccess.DEFAULT_DATETIME_PATTERN,
+ DatetimeConfigurableItemAccess.DEFAULT_LOCALE);
simpleDateFormat.setTimeZone(TimeZone.getDefault());
when(operationMeta.getHttpMethod()).thenReturn(HttpMethod.DELETE.toString());
String log = LOG_GENERATOR.generateClientLog(finishEvent);
Assert.assertEquals("DELETE" + " - " + simpleDateFormat.format(startMillisecond), log);
}
+
+ @Test
+ public void testUserDefinedLogGenerator() {
+ AccessLogItem<RoutingContext>[] elements = Deencapsulation.getField(USER_DEFINED_LOG_GENERATOR, "accessLogItems");
+ assertEquals(3, elements.length);
+ assertEquals(RemoteHostItemAccess.class, elements[0].getClass());
+ assertEquals(PlainTextItemAccess.class, elements[1].getClass());
+ assertEquals(UserDefinedAccessAccessLogItem.class, elements[2].getClass());
+ }
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/CookieItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/CookieItemTest.java
similarity index 89%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/CookieItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/CookieItemTest.java
index f31f711..9384116 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/CookieItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/CookieItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.mockito.Mockito.when;
@@ -42,7 +42,7 @@ public class CookieItemTest {
public static final String COOKIE_VALUE = "cookieVALUE";
- private static final CookieItem ELEMENT = new CookieItem(COOKIE_NAME);
+ private static final CookieItemAccess ELEMENT = new CookieItemAccess(COOKIE_NAME);
private StringBuilder strBuilder;
@@ -77,7 +77,7 @@ public class CookieItemTest {
when(mockContext.cookieMap()).thenReturn(cookieSet);
accessLogEvent.setRoutingContext(mockContext);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertEquals(COOKIE_VALUE, strBuilder.toString());
}
@@ -93,7 +93,7 @@ public class CookieItemTest {
when(invocation.getHandlerContext()).thenReturn(handlerMap);
when(restClientRequest.getCookieMap()).thenReturn(cookieMap);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertEquals(COOKIE_VALUE, strBuilder.toString());
}
@@ -104,7 +104,7 @@ public class CookieItemTest {
Mockito.when(mockContext.cookieMap()).thenReturn(cookieSet);
accessLogEvent.setRoutingContext(mockContext);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertEquals("-", strBuilder.toString());
}
@@ -118,7 +118,7 @@ public class CookieItemTest {
when(invocation.getHandlerContext()).thenReturn(handlerMap);
when(restClientRequest.getCookieMap()).thenReturn(cookieMap);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertEquals("-", strBuilder.toString());
}
@@ -129,7 +129,7 @@ public class CookieItemTest {
Mockito.when(mockContext.cookieMap()).thenReturn(null);
accessLogEvent.setRoutingContext(mockContext);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertEquals("-", strBuilder.toString());
}
@@ -142,7 +142,7 @@ public class CookieItemTest {
when(invocation.getHandlerContext()).thenReturn(handlerMap);
when(restClientRequest.getCookieMap()).thenReturn(null);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertEquals("-", strBuilder.toString());
}
@@ -156,7 +156,7 @@ public class CookieItemTest {
Mockito.when(mockContext.cookieMap()).thenReturn(cookieSet);
accessLogEvent.setRoutingContext(mockContext);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertEquals("-", strBuilder.toString());
}
@@ -171,7 +171,7 @@ public class CookieItemTest {
when(invocation.getHandlerContext()).thenReturn(handlerMap);
when(restClientRequest.getCookieMap()).thenReturn(cookieMap);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertEquals("-", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/DatetimeConfigurableItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DatetimeConfigurableItemTest.java
similarity index 74%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/DatetimeConfigurableItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DatetimeConfigurableItemTest.java
index 22bbffc..d3b09fb 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/DatetimeConfigurableItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DatetimeConfigurableItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
@@ -65,109 +65,109 @@ public class DatetimeConfigurableItemTest {
@Test
public void serverFormattedElement() {
- DatetimeConfigurableItem element = new DatetimeConfigurableItem(
+ DatetimeConfigurableItemAccess element = new DatetimeConfigurableItemAccess(
"EEE, yyyy MMM dd HH:mm:ss zzz|GMT-08|zh-CN");
- element.appendFormattedItem(accessLogEvent, strBuilder);
+ element.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("星期一, 2014 十一月 24 13:10:50 GMT-08:00", strBuilder.toString());
}
@Test
public void clientFormattedElement() {
- DatetimeConfigurableItem element = new DatetimeConfigurableItem(
+ DatetimeConfigurableItemAccess element = new DatetimeConfigurableItemAccess(
"EEE, yyyy MMM dd HH:mm:ss zzz|GMT-08|zh-CN");
- element.appendFormattedItem(finishEvent, strBuilder);
+ element.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("星期一, 2014 十一月 24 13:10:50 GMT-08:00", strBuilder.toString());
}
@Test
public void serverFormattedElementOnNoPattern() {
- DatetimeConfigurableItem element = new DatetimeConfigurableItem(
+ DatetimeConfigurableItemAccess element = new DatetimeConfigurableItemAccess(
"|GMT+08|zh-CN");
- element.appendFormattedItem(accessLogEvent, strBuilder);
+ element.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("星期二, 25 十一月 2014 05:10:50 GMT+08:00", strBuilder.toString());
}
@Test
public void clientFormattedElementOnNoPattern() {
- DatetimeConfigurableItem element = new DatetimeConfigurableItem(
+ DatetimeConfigurableItemAccess element = new DatetimeConfigurableItemAccess(
"|GMT+08|zh-CN");
- element.appendFormattedItem(finishEvent, strBuilder);
+ element.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("星期二, 25 十一月 2014 05:10:50 GMT+08:00", strBuilder.toString());
}
@Test
public void getFormattedElementOnNoTimezone() {
- DatetimeConfigurableItem element = new DatetimeConfigurableItem(
+ DatetimeConfigurableItemAccess element = new DatetimeConfigurableItemAccess(
"yyyy/MM/dd zzz||zh-CN");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd zzz", Locale.forLanguageTag("zh-CN"));
simpleDateFormat.setTimeZone(TimeZone.getDefault());
- element.appendFormattedItem(accessLogEvent, strBuilder);
+ element.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals(simpleDateFormat.format(START_MILLISECOND), strBuilder.toString());
}
@Test
public void clientFormattedElementOnNoTimezone() {
- DatetimeConfigurableItem element = new DatetimeConfigurableItem(
+ DatetimeConfigurableItemAccess element = new DatetimeConfigurableItemAccess(
"yyyy/MM/dd zzz||zh-CN");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd zzz", Locale.forLanguageTag("zh-CN"));
simpleDateFormat.setTimeZone(TimeZone.getDefault());
- element.appendFormattedItem(finishEvent, strBuilder);
+ element.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals(simpleDateFormat.format(START_MILLISECOND), strBuilder.toString());
}
@Test
public void serverFormattedElementOnNoLocale() {
- DatetimeConfigurableItem element = new DatetimeConfigurableItem(
+ DatetimeConfigurableItemAccess element = new DatetimeConfigurableItemAccess(
"EEE, dd MMM yyyy HH:mm:ss zzz|GMT+08|");
- element.appendFormattedItem(accessLogEvent, strBuilder);
+ element.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("Tue, 25 Nov 2014 05:10:50 GMT+08:00", strBuilder.toString());
}
@Test
public void clientFormattedElementOnNoLocale() {
- DatetimeConfigurableItem element = new DatetimeConfigurableItem(
+ DatetimeConfigurableItemAccess element = new DatetimeConfigurableItemAccess(
"EEE, dd MMM yyyy HH:mm:ss zzz|GMT+08|");
- element.appendFormattedItem(finishEvent, strBuilder);
+ element.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("Tue, 25 Nov 2014 05:10:50 GMT+08:00", strBuilder.toString());
}
@Test
public void serverFormattedElementOnNoConfig() {
- DatetimeConfigurableItem element = new DatetimeConfigurableItem(
+ DatetimeConfigurableItemAccess element = new DatetimeConfigurableItemAccess(
"||");
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DatetimeConfigurableItem.DEFAULT_DATETIME_PATTERN,
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DatetimeConfigurableItemAccess.DEFAULT_DATETIME_PATTERN,
Locale.US);
simpleDateFormat.setTimeZone(TimeZone.getDefault());
- element.appendFormattedItem(accessLogEvent, strBuilder);
+ element.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals(simpleDateFormat.format(START_MILLISECOND), strBuilder.toString());
}
@Test
public void clientFormattedElementOnNoConfig() {
- DatetimeConfigurableItem element = new DatetimeConfigurableItem(
+ DatetimeConfigurableItemAccess element = new DatetimeConfigurableItemAccess(
"||");
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DatetimeConfigurableItem.DEFAULT_DATETIME_PATTERN,
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DatetimeConfigurableItemAccess.DEFAULT_DATETIME_PATTERN,
Locale.US);
simpleDateFormat.setTimeZone(TimeZone.getDefault());
- element.appendFormattedItem(finishEvent, strBuilder);
+ element.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals(simpleDateFormat.format(START_MILLISECOND), strBuilder.toString());
}
@Test
public void serverConstructorWithNoArg() {
- DatetimeConfigurableItem element = new DatetimeConfigurableItem();
+ DatetimeConfigurableItemAccess element = new DatetimeConfigurableItemAccess();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
simpleDateFormat.setTimeZone(TimeZone.getDefault());
- element.appendFormattedItem(accessLogEvent, strBuilder);
+ element.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("EEE, dd MMM yyyy HH:mm:ss zzz", element.getPattern());
assertEquals(Locale.US, element.getLocale());
assertEquals(TimeZone.getDefault(), element.getTimezone());
@@ -176,11 +176,11 @@ public class DatetimeConfigurableItemTest {
@Test
public void clientConstructorWithNoArg() {
- DatetimeConfigurableItem element = new DatetimeConfigurableItem();
+ DatetimeConfigurableItemAccess element = new DatetimeConfigurableItemAccess();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
simpleDateFormat.setTimeZone(TimeZone.getDefault());
- element.appendFormattedItem(finishEvent, strBuilder);
+ element.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("EEE, dd MMM yyyy HH:mm:ss zzz", element.getPattern());
assertEquals(Locale.US, element.getLocale());
assertEquals(TimeZone.getDefault(), element.getTimezone());
@@ -189,11 +189,11 @@ public class DatetimeConfigurableItemTest {
@Test
public void serverConstructorWithNoSeparator() {
- DatetimeConfigurableItem element = new DatetimeConfigurableItem("yyyy/MM/dd HH:mm:ss zzz");
+ DatetimeConfigurableItemAccess element = new DatetimeConfigurableItemAccess("yyyy/MM/dd HH:mm:ss zzz");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss zzz", Locale.US);
simpleDateFormat.setTimeZone(TimeZone.getDefault());
- element.appendFormattedItem(accessLogEvent, strBuilder);
+ element.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("yyyy/MM/dd HH:mm:ss zzz", element.getPattern());
assertEquals(Locale.US, element.getLocale());
assertEquals(TimeZone.getDefault(), element.getTimezone());
@@ -202,11 +202,11 @@ public class DatetimeConfigurableItemTest {
@Test
public void clientConstructorWithNoSeparator() {
- DatetimeConfigurableItem element = new DatetimeConfigurableItem("yyyy/MM/dd HH:mm:ss zzz");
+ DatetimeConfigurableItemAccess element = new DatetimeConfigurableItemAccess("yyyy/MM/dd HH:mm:ss zzz");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss zzz", Locale.US);
simpleDateFormat.setTimeZone(TimeZone.getDefault());
- element.appendFormattedItem(finishEvent, strBuilder);
+ element.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("yyyy/MM/dd HH:mm:ss zzz", element.getPattern());
assertEquals(Locale.US, element.getLocale());
assertEquals(TimeZone.getDefault(), element.getTimezone());
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/DurationMillisecondItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondItemTest.java
similarity index 88%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/DurationMillisecondItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondItemTest.java
index 231aae8..5824bd0 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/DurationMillisecondItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationMillisecondItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
@@ -30,7 +30,7 @@ import org.mockito.Mockito;
public class DurationMillisecondItemTest {
- public static final DurationMillisecondItem ELEMENT = new DurationMillisecondItem();
+ public static final DurationMillisecondItemAccess ELEMENT = new DurationMillisecondItemAccess();
private StringBuilder strBuilder;
@@ -61,11 +61,11 @@ public class DurationMillisecondItemTest {
@Test
public void testAppendFormattedElement() {
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("1", strBuilder.toString());
strBuilder = new StringBuilder();
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("1", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/DurationSecondItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationSecondItemTest.java
similarity index 84%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/DurationSecondItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationSecondItemTest.java
index 2e983eb..5e9c59b 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/DurationSecondItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/DurationSecondItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
@@ -30,7 +30,7 @@ import org.mockito.Mockito;
public class DurationSecondItemTest {
- public static final DurationSecondItem ELEMENT = new DurationSecondItem();
+ public static final DurationSecondItemAccess ELEMENT = new DurationSecondItemAccess();
private StringBuilder strBuilder;
@@ -60,42 +60,42 @@ public class DurationSecondItemTest {
@Test
public void serverFormattedElementOn999ms() {
accessLogEvent.setMilliEndTime(1000L);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("0", strBuilder.toString());
}
@Test
public void clientFormattedElementOn999ms() {
when(invocationStageTrace.getFinish()).thenReturn(1000_000_000L);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("0", strBuilder.toString());
}
@Test
public void serverFormattedElementOn1000ms() {
accessLogEvent.setMilliEndTime(1001L);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("1", strBuilder.toString());
}
@Test
public void clientFormattedElementOn1000ms() {
when(invocationStageTrace.getFinish()).thenReturn(1001_000_000L);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("1", strBuilder.toString());
}
@Test
public void serverFormattedElementOn1001ms() {
accessLogEvent.setMilliEndTime(1002L);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("1", strBuilder.toString());
}
@Test
public void clientFormattedElementOn1001ms() {
when(invocationStageTrace.getFinish()).thenReturn(1002_000_000L);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("1", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/FirstLineOfRequestItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/FirstLineOfRequestItemTest.java
similarity index 89%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/FirstLineOfRequestItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/FirstLineOfRequestItemTest.java
index bf971ac..5c7b599 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/FirstLineOfRequestItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/FirstLineOfRequestItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
@@ -42,7 +42,7 @@ import io.vertx.ext.web.RoutingContext;
public class FirstLineOfRequestItemTest {
- public static final FirstLineOfRequestItem ELEMENT = new FirstLineOfRequestItem();
+ public static final FirstLineOfRequestItemAccess ELEMENT = new FirstLineOfRequestItemAccess();
private StringBuilder strBuilder;
@@ -93,18 +93,18 @@ public class FirstLineOfRequestItemTest {
when(request.path()).thenReturn(uri);
when(request.version()).thenReturn(HttpVersion.HTTP_1_1);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("\"DELETE " + uri + " HTTP/1.1\"", strBuilder.toString());
}
@Test
public void clientFormattedElement() {
String uri = "/test/uri";
- when(urlEndpoint.isSslEnabled()).thenReturn(false);
when(clientRequest.method()).thenReturn(HttpMethod.DELETE);
when(clientRequest.path()).thenReturn(uri);
+ when(urlEndpoint.isHttp2Enabled()).thenReturn(true);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
- assertEquals("\"DELETE " + uri + " HTTP\"", strBuilder.toString());
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
+ assertEquals("\"DELETE " + uri + " HTTP/2.0\"", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/HttpMethodItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpMethodItemTest.java
similarity index 89%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/HttpMethodItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpMethodItemTest.java
index 012a965..dc2c828 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/HttpMethodItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpMethodItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.mockito.Mockito.when;
@@ -40,7 +40,7 @@ import io.vertx.core.http.HttpServerRequest;
import io.vertx.ext.web.RoutingContext;
public class HttpMethodItemTest {
- private static final HttpMethodItem ITEM = new HttpMethodItem();
+ private static final HttpMethodItemAccess ITEM = new HttpMethodItemAccess();
private StringBuilder strBuilder;
@@ -86,7 +86,7 @@ public class HttpMethodItemTest {
Mockito.when(routingContext.request()).thenReturn(request);
Mockito.when(request.method()).thenReturn(HttpMethod.DELETE);
accessLogEvent.setRoutingContext(routingContext);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertEquals("DELETE", strBuilder.toString());
}
@@ -94,7 +94,7 @@ public class HttpMethodItemTest {
public void clientFormattedElement() {
when(restClientRequest.getRequest()).thenReturn(clientRequest);
when(clientRequest.method()).thenReturn(HttpMethod.DELETE);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertEquals("DELETE", strBuilder.toString());
}
@@ -102,14 +102,14 @@ public class HttpMethodItemTest {
public void serverFormattedElementOnRequestIsNull() {
accessLogEvent.setRoutingContext(routingContext);
Mockito.when(routingContext.request()).thenReturn(null);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertEquals("-", strBuilder.toString());
}
@Test
public void clientFormattedElementOnRequestIsNull() {
when(restClientRequest.getRequest()).thenReturn(null);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertEquals("-", strBuilder.toString());
}
@@ -121,14 +121,14 @@ public class HttpMethodItemTest {
Mockito.when(routingContext.request()).thenReturn(request);
Mockito.when(request.method()).thenReturn(null);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertEquals("-", strBuilder.toString());
}
@Test
public void clientFormattedElementOnMethodIsNull() {
when(clientRequest.method()).thenReturn(null);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertEquals("-", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/HttpStatusItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpStatusItemTest.java
similarity index 85%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/HttpStatusItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpStatusItemTest.java
index 6a43b88..a5d226f 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/HttpStatusItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/HttpStatusItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
@@ -32,7 +32,7 @@ import io.vertx.ext.web.RoutingContext;
public class HttpStatusItemTest {
- private static final HttpStatusItem STATUS_ELEMENT = new HttpStatusItem();
+ private static final HttpStatusItemAccess STATUS_ELEMENT = new HttpStatusItemAccess();
private StringBuilder strBuilder;
@@ -64,7 +64,7 @@ public class HttpStatusItemTest {
when(routingContext.response()).thenReturn(serverResponse);
when(serverResponse.getStatusCode()).thenReturn(statusCode);
- STATUS_ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ STATUS_ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("200", strBuilder.toString());
}
@@ -74,14 +74,14 @@ public class HttpStatusItemTest {
when(finishEvent.getResponse()).thenReturn(response);
when(response.getStatusCode()).thenReturn(statusCode);
- STATUS_ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ STATUS_ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("200", strBuilder.toString());
}
@Test
public void serverFormattedElementOnResponseIsNull() {
Mockito.when(routingContext.response()).thenReturn(null);
- STATUS_ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ STATUS_ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
Mockito.when(routingContext.response()).thenReturn(serverResponse);
@@ -89,14 +89,14 @@ public class HttpStatusItemTest {
Mockito.when(serverResponse.ended()).thenReturn(false);
strBuilder = new StringBuilder();
- STATUS_ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ STATUS_ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@Test
public void clientFormattedElementOnResponseIsNull() {
when(finishEvent.getResponse()).thenReturn(null);
- STATUS_ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ STATUS_ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/InvocationContextItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/InvocationContextItemTest.java
similarity index 83%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/InvocationContextItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/InvocationContextItemTest.java
index 48952d4..54eea30 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/InvocationContextItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/InvocationContextItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.mockito.Mockito.when;
@@ -40,7 +40,7 @@ public class InvocationContextItemTest {
public static final String INVOCATION_CONTEXT_VALUE = "testValue";
- private static InvocationContextItem ITEM = new InvocationContextItem(INVOCATION_CONTEXT_KEY);
+ private static InvocationContextItemAccess ITEM = new InvocationContextItemAccess(INVOCATION_CONTEXT_KEY);
private StringBuilder strBuilder;
@@ -70,7 +70,7 @@ public class InvocationContextItemTest {
routingContextData.put(RestConst.REST_INVOCATION_CONTEXT, invocation);
when(invocation.getContext(INVOCATION_CONTEXT_KEY)).thenReturn(INVOCATION_CONTEXT_VALUE);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertThat(strBuilder.toString(), Matchers.is(INVOCATION_CONTEXT_VALUE));
}
@@ -81,7 +81,7 @@ public class InvocationContextItemTest {
when(invocation.getContext()).thenReturn(context);
context.put(INVOCATION_CONTEXT_KEY, INVOCATION_CONTEXT_VALUE);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertThat(strBuilder.toString(), Matchers.is(INVOCATION_CONTEXT_VALUE));
}
@@ -93,8 +93,8 @@ public class InvocationContextItemTest {
routingContextData.put(RestConst.REST_INVOCATION_CONTEXT, invocation);
when(invocation.getContext(INVOCATION_CONTEXT_KEY)).thenReturn(null);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
- Assert.assertThat(strBuilder.toString(), Matchers.is(InvocationContextItem.NOT_FOUND));
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
+ Assert.assertThat(strBuilder.toString(), Matchers.is(InvocationContextItemAccess.NOT_FOUND));
}
@Test
@@ -104,8 +104,8 @@ public class InvocationContextItemTest {
when(invocation.getContext()).thenReturn(context);
context.put(INVOCATION_CONTEXT_KEY, null);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
- Assert.assertThat(strBuilder.toString(), Matchers.is(InvocationContextItem.NOT_FOUND));
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
+ Assert.assertThat(strBuilder.toString(), Matchers.is(InvocationContextItemAccess.NOT_FOUND));
}
@Test
@@ -113,8 +113,8 @@ public class InvocationContextItemTest {
Map<String, Object> routingContextData = new HashMap<>();
when(routingContext.data()).thenReturn(routingContextData);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
- Assert.assertThat(strBuilder.toString(), Matchers.is(InvocationContextItem.NOT_FOUND));
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
+ Assert.assertThat(strBuilder.toString(), Matchers.is(InvocationContextItemAccess.NOT_FOUND));
}
@Test
@@ -123,29 +123,29 @@ public class InvocationContextItemTest {
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getContext()).thenReturn(context);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
- Assert.assertThat(strBuilder.toString(), Matchers.is(InvocationContextItem.NOT_FOUND));
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
+ Assert.assertThat(strBuilder.toString(), Matchers.is(InvocationContextItemAccess.NOT_FOUND));
}
@Test
public void testGetFormattedItemOnRoutingContextDataNotFound() {
when(routingContext.data()).thenReturn(null);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
- Assert.assertThat(strBuilder.toString(), Matchers.is(InvocationContextItem.NOT_FOUND));
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
+ Assert.assertThat(strBuilder.toString(), Matchers.is(InvocationContextItemAccess.NOT_FOUND));
}
@Test
public void clientGetFormattedItemOnRoutingContextDataNotFound() {
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getContext()).thenReturn(null);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
- Assert.assertThat(strBuilder.toString(), Matchers.is(InvocationContextItem.NOT_FOUND));
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
+ Assert.assertThat(strBuilder.toString(), Matchers.is(InvocationContextItemAccess.NOT_FOUND));
}
@Test
public void clientGetFormattedItemOnInvocationNotFound() {
when(finishEvent.getInvocation()).thenReturn(null);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
- Assert.assertThat(strBuilder.toString(), Matchers.is(InvocationContextItem.NOT_FOUND));
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
+ Assert.assertThat(strBuilder.toString(), Matchers.is(InvocationContextItemAccess.NOT_FOUND));
}
}
\ No newline at end of file
diff --git a/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalHostItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalHostItemTest.java
new file mode 100644
index 0000000..a4005f1
--- /dev/null
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalHostItemTest.java
@@ -0,0 +1,185 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.common.accessLog.core.element.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.when;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.servicecomb.common.rest.RestConst;
+import org.apache.servicecomb.common.rest.codec.param.RestClientRequestImpl;
+import org.apache.servicecomb.core.Invocation;
+import org.apache.servicecomb.core.event.InvocationFinishEvent;
+import org.apache.servicecomb.core.event.ServerAccessLogEvent;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import io.vertx.core.http.HttpClientRequest;
+import io.vertx.core.http.HttpConnection;
+import io.vertx.core.http.HttpServerRequest;
+import io.vertx.core.net.SocketAddress;
+import io.vertx.ext.web.RoutingContext;
+
+public class LocalHostItemTest {
+ public static final LocalHostItemAccess ELEMENT = new LocalHostItemAccess();
+
+ private StringBuilder strBuilder;
+
+ private InvocationFinishEvent finishEvent;
+
+ private ServerAccessLogEvent accessLogEvent;
+
+ private RoutingContext routingContext;
+
+ private HttpServerRequest serverRequest;
+
+ private SocketAddress socketAddress;
+
+ private Invocation invocation;
+
+ private RestClientRequestImpl restClientRequest;
+
+ private HttpClientRequest clientRequest;
+
+ private HttpConnection connection;
+
+ @Before
+ public void initStrBuilder() {
+ accessLogEvent = new ServerAccessLogEvent();
+ routingContext = Mockito.mock(RoutingContext.class);
+ finishEvent = Mockito.mock(InvocationFinishEvent.class);
+ serverRequest = Mockito.mock(HttpServerRequest.class);
+ socketAddress = Mockito.mock(SocketAddress.class);
+ invocation = Mockito.mock(Invocation.class);
+ restClientRequest = Mockito.mock(RestClientRequestImpl.class);
+ clientRequest = Mockito.mock(HttpClientRequest.class);
+ connection = Mockito.mock(HttpConnection.class);
+ Map<String, Object> handlerMap = new HashMap<>();
+ handlerMap.put(RestConst.INVOCATION_HANDLER_REQUESTCLIENT, restClientRequest);
+ when(finishEvent.getInvocation()).thenReturn(invocation);
+ when(invocation.getHandlerContext()).thenReturn(handlerMap);
+ accessLogEvent.setRoutingContext(routingContext);
+ strBuilder = new StringBuilder();
+ }
+
+ @Test
+ public void clientFormattedItem() {
+ String localAddress = "192.168.0.1";
+ when(restClientRequest.getRequest()).thenReturn(clientRequest);
+ when(clientRequest.connection()).thenReturn(connection);
+ when(connection.localAddress()).thenReturn(socketAddress);
+ when(socketAddress.host()).thenReturn(localAddress);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
+ Assert.assertEquals(localAddress, strBuilder.toString());
+ }
+
+ @Test
+ public void serverFormattedItem() {
+ String localAddress = "192.168.0.1";
+ accessLogEvent.setLocalAddress(localAddress);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
+ Assert.assertEquals(localAddress, strBuilder.toString());
+ }
+
+ @Test
+ public void getLocalAddress() {
+ String localHost = "testHost";
+ Mockito.when(routingContext.request()).thenReturn(serverRequest);
+ Mockito.when(serverRequest.localAddress()).thenReturn(socketAddress);
+ Mockito.when(socketAddress.host()).thenReturn(localHost);
+
+ String result = LocalHostItemAccess.getLocalAddress(routingContext);
+ assertEquals(localHost, result);
+ }
+
+ @Test
+ public void serverLocalAddressOnRequestIsNull() {
+ Mockito.when(routingContext.request()).thenReturn(null);
+ String result = LocalHostItemAccess.getLocalAddress(routingContext);
+ assertEquals("-", result);
+ }
+
+ @Test
+ public void clientLocalAddressOnRequestIsNull() {
+ when(restClientRequest.getRequest()).thenReturn(null);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
+ Assert.assertEquals("-", strBuilder.toString());
+ }
+
+ @Test
+ public void serverLocalAddressOnLocalAddressIsNull() {
+ Mockito.when(routingContext.request()).thenReturn(serverRequest);
+ Mockito.when(serverRequest.localAddress()).thenReturn(null);
+ String result = LocalHostItemAccess.getLocalAddress(routingContext);
+ assertEquals("-", result);
+ }
+
+ @Test
+ public void clientLocalAddressOnLocalAddressIsNull() {
+ when(restClientRequest.getRequest()).thenReturn(clientRequest);
+ when(clientRequest.connection()).thenReturn(connection);
+ when(connection.localAddress()).thenReturn(null);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
+ Assert.assertEquals("-", strBuilder.toString());
+ }
+
+ @Test
+ public void serverLocalAddressOnHostIsNull() {
+ Mockito.when(routingContext.request()).thenReturn(serverRequest);
+ Mockito.when(serverRequest.localAddress()).thenReturn(socketAddress);
+ Mockito.when(socketAddress.host()).thenReturn(null);
+
+ String result = LocalHostItemAccess.getLocalAddress(routingContext);
+ assertEquals("-", result);
+ }
+
+ @Test
+ public void clientLocalAddressOnHostIsNull() {
+ when(restClientRequest.getRequest()).thenReturn(clientRequest);
+ when(clientRequest.connection()).thenReturn(connection);
+ when(connection.localAddress()).thenReturn(socketAddress);
+ when(socketAddress.host()).thenReturn(null);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
+ Assert.assertEquals("-", strBuilder.toString());
+ }
+
+ @Test
+ public void serverLocalAddressIsEmpty() {
+ String localHost = "";
+ Mockito.when(routingContext.request()).thenReturn(serverRequest);
+ Mockito.when(serverRequest.localAddress()).thenReturn(socketAddress);
+ Mockito.when(socketAddress.host()).thenReturn(localHost);
+
+ String result = LocalHostItemAccess.getLocalAddress(routingContext);
+ assertEquals("-", result);
+ }
+
+ @Test
+ public void clientLocalAddressIsEmpty() {
+ when(restClientRequest.getRequest()).thenReturn(clientRequest);
+ when(clientRequest.connection()).thenReturn(connection);
+ when(connection.localAddress()).thenReturn(socketAddress);
+ when(socketAddress.host()).thenReturn("");
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
+ Assert.assertEquals("-", strBuilder.toString());
+ }
+}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/LocalPortItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalPortItemTest.java
similarity index 52%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/LocalPortItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalPortItemTest.java
index e27359b..b01bc90 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/LocalPortItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/LocalPortItemTest.java
@@ -15,22 +15,31 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.when;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.servicecomb.common.rest.RestConst;
+import org.apache.servicecomb.common.rest.codec.param.RestClientRequestImpl;
+import org.apache.servicecomb.core.Invocation;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
+import io.vertx.core.http.HttpClientRequest;
+import io.vertx.core.http.HttpConnection;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.core.net.SocketAddress;
import io.vertx.ext.web.RoutingContext;
public class LocalPortItemTest {
- public static final LocalPortItem ELEMENT = new LocalPortItem();
+ public static final LocalPortItemAccess ELEMENT = new LocalPortItemAccess();
private StringBuilder strBuilder;
@@ -44,6 +53,14 @@ public class LocalPortItemTest {
private SocketAddress socketAddress;
+ private Invocation invocation;
+
+ private RestClientRequestImpl restClientRequest;
+
+ private HttpClientRequest clientRequest;
+
+ private HttpConnection connection;
+
@Before
public void initStrBuilder() {
accessLogEvent = new ServerAccessLogEvent();
@@ -51,7 +68,14 @@ public class LocalPortItemTest {
finishEvent = Mockito.mock(InvocationFinishEvent.class);
serverRequest = Mockito.mock(HttpServerRequest.class);
socketAddress = Mockito.mock(SocketAddress.class);
-
+ invocation = Mockito.mock(Invocation.class);
+ restClientRequest = Mockito.mock(RestClientRequestImpl.class);
+ clientRequest = Mockito.mock(HttpClientRequest.class);
+ connection = Mockito.mock(HttpConnection.class);
+ Map<String, Object> handlerMap = new HashMap<>();
+ handlerMap.put(RestConst.INVOCATION_HANDLER_REQUESTCLIENT, restClientRequest);
+ when(finishEvent.getInvocation()).thenReturn(invocation);
+ when(invocation.getHandlerContext()).thenReturn(handlerMap);
accessLogEvent.setRoutingContext(routingContext);
strBuilder = new StringBuilder();
}
@@ -62,29 +86,48 @@ public class LocalPortItemTest {
Mockito.when(serverRequest.localAddress()).thenReturn(socketAddress);
Mockito.when(socketAddress.port()).thenReturn(8080);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("8080", strBuilder.toString());
}
@Test
public void clientFormattedElement() {
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
- assertEquals("-", strBuilder.toString());
+ when(restClientRequest.getRequest()).thenReturn(clientRequest);
+ when(clientRequest.connection()).thenReturn(connection);
+ when(connection.localAddress()).thenReturn(socketAddress);
+ when(socketAddress.port()).thenReturn(8080);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
+ assertEquals("8080", strBuilder.toString());
}
@Test
- public void getFormattedElementOnRequestIsNull() {
+ public void serverFormattedElementOnRequestIsNull() {
Mockito.when(routingContext.request()).thenReturn(null);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@Test
- public void getFormattedElementOnLocalAddressIsNull() {
+ public void clientFormattedElementOnRequestIsNull() {
+ when(restClientRequest.getRequest()).thenReturn(null);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
+ assertEquals("-", strBuilder.toString());
+ }
+
+ @Test
+ public void serverFormattedElementOnLocalAddressIsNull() {
Mockito.when(routingContext.request()).thenReturn(serverRequest);
Mockito.when(serverRequest.localAddress()).thenReturn(null);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
+ assertEquals("-", strBuilder.toString());
+ }
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ @Test
+ public void clientFormattedElementOnLocalAddressIsNull() {
+ when(restClientRequest.getRequest()).thenReturn(clientRequest);
+ when(clientRequest.connection()).thenReturn(connection);
+ when(connection.localAddress()).thenReturn(null);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/PlainTextItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/PlainTextItemTest.java
similarity index 82%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/PlainTextItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/PlainTextItemTest.java
index 2fcb201..53b6e4d 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/PlainTextItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/PlainTextItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.junit.Assert.assertEquals;
@@ -41,15 +41,15 @@ public class PlainTextItemTest {
@Test
public void serverFormattedElement() {
- PlainTextItem element = new PlainTextItem("contentTest");
- element.appendFormattedItem(accessLogEvent, strBuilder);
+ PlainTextItemAccess element = new PlainTextItemAccess("contentTest");
+ element.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("contentTest", strBuilder.toString());
}
@Test
public void clientFormattedElement() {
- PlainTextItem element = new PlainTextItem("contentTest");
- element.appendFormattedItem(finishEvent, strBuilder);
+ PlainTextItemAccess element = new PlainTextItemAccess("contentTest");
+ element.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("contentTest", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/QueryStringItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/QueryStringItemTest.java
similarity index 89%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/QueryStringItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/QueryStringItemTest.java
index 5aa8f1f..c1afa5c 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/QueryStringItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/QueryStringItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
@@ -37,7 +37,7 @@ import io.vertx.core.http.HttpServerRequest;
import io.vertx.ext.web.RoutingContext;
public class QueryStringItemTest {
- private static final QueryStringItem ITEM = new QueryStringItem();
+ private static final QueryStringItemAccess ITEM = new QueryStringItemAccess();
private StringBuilder strBuilder;
@@ -74,7 +74,7 @@ public class QueryStringItemTest {
String query = "?status=up";
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.query()).thenReturn(query);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals(query, strBuilder.toString());
}
@@ -88,14 +88,14 @@ public class QueryStringItemTest {
when(restClientRequest.getRequest()).thenReturn(clientRequest);
when(clientRequest.query()).thenReturn(query);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals(query, strBuilder.toString());
}
@Test
public void serverFormattedElementOnRequestIsNull() {
when(routingContext.request()).thenReturn(null);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -107,7 +107,7 @@ public class QueryStringItemTest {
when(invocation.getHandlerContext()).thenReturn(handlerContext);
when(restClientRequest.getRequest()).thenReturn(null);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -115,7 +115,7 @@ public class QueryStringItemTest {
public void serverFormattedElementOnQueryIsNull() {
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.query()).thenReturn(null);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -128,7 +128,7 @@ public class QueryStringItemTest {
when(restClientRequest.getRequest()).thenReturn(clientRequest);
when(clientRequest.query()).thenReturn(null);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -137,7 +137,7 @@ public class QueryStringItemTest {
String query = "";
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.query()).thenReturn(query);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -151,7 +151,7 @@ public class QueryStringItemTest {
when(restClientRequest.getRequest()).thenReturn(clientRequest);
when(clientRequest.query()).thenReturn(query);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/RemoteHostItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/RemoteHostItemTest.java
similarity index 86%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/RemoteHostItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/RemoteHostItemTest.java
index 24967d9..3c2ee79 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/RemoteHostItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/RemoteHostItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
@@ -34,7 +34,7 @@ import io.vertx.core.net.SocketAddress;
import io.vertx.ext.web.RoutingContext;
public class RemoteHostItemTest {
- public static final RemoteHostItem ELEMENT = new RemoteHostItem();
+ public static final RemoteHostItemAccess ELEMENT = new RemoteHostItemAccess();
private StringBuilder strBuilder;
@@ -75,7 +75,7 @@ public class RemoteHostItemTest {
when(serverRequest.remoteAddress()).thenReturn(socketAddress);
when(socketAddress.host()).thenReturn(remoteHost);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals(remoteHost, strBuilder.toString());
}
@@ -86,14 +86,14 @@ public class RemoteHostItemTest {
when(invocation.getEndpoint()).thenReturn(endpoint);
when(endpoint.getAddress()).thenReturn(uriEndpointObject);
when(uriEndpointObject.getHostOrIp()).thenReturn(remoteHost);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals(remoteHost, strBuilder.toString());
}
@Test
public void serverFormattedElementOnRequestIsNull() {
when(routingContext.request()).thenReturn(null);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -101,7 +101,7 @@ public class RemoteHostItemTest {
public void clientFormattedElementOnRequestIsNull() {
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getEndpoint()).thenReturn(null);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -109,7 +109,7 @@ public class RemoteHostItemTest {
public void serverFormattedElementOnRemoteAddressIsNull() {
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.remoteAddress()).thenReturn(null);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -118,7 +118,7 @@ public class RemoteHostItemTest {
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getEndpoint()).thenReturn(endpoint);
when(endpoint.getAddress()).thenReturn(null);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -127,7 +127,7 @@ public class RemoteHostItemTest {
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.remoteAddress()).thenReturn(socketAddress);
when(socketAddress.host()).thenReturn(null);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -137,7 +137,7 @@ public class RemoteHostItemTest {
when(invocation.getEndpoint()).thenReturn(endpoint);
when(endpoint.getAddress()).thenReturn(uriEndpointObject);
when(uriEndpointObject.getHostOrIp()).thenReturn(null);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -146,7 +146,7 @@ public class RemoteHostItemTest {
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.remoteAddress()).thenReturn(socketAddress);
when(socketAddress.host()).thenReturn("");
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -156,7 +156,7 @@ public class RemoteHostItemTest {
when(invocation.getEndpoint()).thenReturn(endpoint);
when(endpoint.getAddress()).thenReturn(uriEndpointObject);
when(uriEndpointObject.getHostOrIp()).thenReturn("");
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/RequestHeaderItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestHeaderItemTest.java
similarity index 90%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/RequestHeaderItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestHeaderItemTest.java
index 3d84b9b..b82ed08 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/RequestHeaderItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestHeaderItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
@@ -41,7 +41,7 @@ import io.vertx.ext.web.RoutingContext;
public class RequestHeaderItemTest {
private static final String VAR_NAME = "varName";
- private static final RequestHeaderItem ELEMENT = new RequestHeaderItem(VAR_NAME);
+ private static final RequestHeaderItemAccess ELEMENT = new RequestHeaderItemAccess(VAR_NAME);
private StringBuilder strBuilder;
@@ -84,7 +84,7 @@ public class RequestHeaderItemTest {
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.headers()).thenReturn(headers);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals(testValue, strBuilder.toString());
assertEquals(ELEMENT.getVarName(), VAR_NAME);
}
@@ -101,7 +101,7 @@ public class RequestHeaderItemTest {
when(clientRequest.headers()).thenReturn(headers);
when(headers.get(VAR_NAME)).thenReturn(testValue);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals(testValue, strBuilder.toString());
}
@@ -110,7 +110,7 @@ public class RequestHeaderItemTest {
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.headers()).thenReturn(null);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -123,7 +123,7 @@ public class RequestHeaderItemTest {
when(restClientRequest.getRequest()).thenReturn(clientRequest);
when(clientRequest.headers()).thenReturn(null);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -135,7 +135,7 @@ public class RequestHeaderItemTest {
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.headers()).thenReturn(headers);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/RequestProtocolItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestProtocolItemTest.java
similarity index 81%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/RequestProtocolItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestProtocolItemTest.java
index d85151b..8083c78 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/RequestProtocolItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/RequestProtocolItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
@@ -34,7 +34,7 @@ import io.vertx.core.http.HttpVersion;
import io.vertx.ext.web.RoutingContext;
public class RequestProtocolItemTest {
- private static final RequestProtocolItem ITEM = new RequestProtocolItem();
+ private static final RequestProtocolItemAccess ITEM = new RequestProtocolItemAccess();
private StringBuilder strBuilder;
@@ -71,17 +71,17 @@ public class RequestProtocolItemTest {
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.version()).thenReturn(HttpVersion.HTTP_1_1);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("HTTP/1.1", strBuilder.toString());
strBuilder = new StringBuilder();
when(serverRequest.version()).thenReturn(HttpVersion.HTTP_1_0);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("HTTP/1.0", strBuilder.toString());
strBuilder = new StringBuilder();
when(serverRequest.version()).thenReturn(HttpVersion.HTTP_2);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("HTTP/2.0", strBuilder.toString());
}
@@ -90,17 +90,17 @@ public class RequestProtocolItemTest {
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getEndpoint()).thenReturn(endpoint);
when(endpoint.getAddress()).thenReturn(urlEndpoint);
- when(urlEndpoint.isSslEnabled()).thenReturn(true);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
- assertEquals("HTTPS", strBuilder.toString());
+ when(urlEndpoint.isHttp2Enabled()).thenReturn(true);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
+ assertEquals("HTTP/2.0", strBuilder.toString());
strBuilder = new StringBuilder();
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getEndpoint()).thenReturn(endpoint);
when(endpoint.getAddress()).thenReturn(urlEndpoint);
- when(urlEndpoint.isSslEnabled()).thenReturn(false);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
- assertEquals("HTTP", strBuilder.toString());
+ when(urlEndpoint.isHttp2Enabled()).thenReturn(false);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
+ assertEquals("HTTP/1.1", strBuilder.toString());
}
@Test
@@ -108,7 +108,7 @@ public class RequestProtocolItemTest {
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.version()).thenReturn(null);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -118,7 +118,7 @@ public class RequestProtocolItemTest {
when(invocation.getEndpoint()).thenReturn(endpoint);
when(endpoint.getAddress()).thenReturn(null);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
- assertEquals("-", strBuilder.toString());
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
+ assertEquals("HTTP/1.1", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/ResponseHeaderItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseHeaderItemTest.java
similarity index 87%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/ResponseHeaderItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseHeaderItemTest.java
index dad7e31..f95086e 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/ResponseHeaderItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseHeaderItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
@@ -41,7 +41,7 @@ public class ResponseHeaderItemTest {
private static final String VAR_NAME = "varName";
- private static final ResponseHeaderItem ELEMENT = new ResponseHeaderItem(VAR_NAME);
+ private static final ResponseHeaderItemAccess ELEMENT = new ResponseHeaderItemAccess(VAR_NAME);
private StringBuilder strBuilder;
@@ -75,7 +75,7 @@ public class ResponseHeaderItemTest {
when(routingContext.response()).thenReturn(serverResponse);
when(serverResponse.headers()).thenReturn(headers);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals(headerValue, strBuilder.toString());
assertEquals(ELEMENT.getVarName(), VAR_NAME);
}
@@ -91,7 +91,7 @@ public class ResponseHeaderItemTest {
when(finishEvent.getResponse()).thenReturn(response);
when(response.getHeaders()).thenReturn(headers);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals(headerValue, strBuilder.toString());
assertEquals(ELEMENT.getVarName(), VAR_NAME);
}
@@ -101,7 +101,7 @@ public class ResponseHeaderItemTest {
when(routingContext.response()).thenReturn(serverResponse);
when(serverResponse.headers()).thenReturn(null);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -110,21 +110,21 @@ public class ResponseHeaderItemTest {
when(finishEvent.getResponse()).thenReturn(response);
when(response.getHeaders()).thenReturn(null);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@Test
public void serverFormattedElementOnResponseIsNull() {
when(routingContext.response()).thenReturn(null);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@Test
public void clientFormattedElementOnResponseIsNull() {
when(finishEvent.getResponse()).thenReturn(null);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -136,7 +136,7 @@ public class ResponseHeaderItemTest {
when(routingContext.response()).thenReturn(serverResponse);
when(serverResponse.headers()).thenReturn(headers);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -150,7 +150,7 @@ public class ResponseHeaderItemTest {
when(finishEvent.getResponse()).thenReturn(response);
when(response.getHeaders()).thenReturn(headers);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/ResponseSizeItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseSizeItemTest.java
similarity index 86%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/ResponseSizeItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseSizeItemTest.java
index 0db4f27..b627b39 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/ResponseSizeItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/ResponseSizeItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
@@ -30,7 +30,7 @@ import io.vertx.core.http.HttpServerResponse;
import io.vertx.ext.web.RoutingContext;
public class ResponseSizeItemTest {
- private static final ResponseSizeItem ELEMENT = new ResponseSizeItem("0");
+ private static final ResponseSizeItemAccess ELEMENT = new ResponseSizeItemAccess("0");
private StringBuilder strBuilder;
@@ -59,20 +59,20 @@ public class ResponseSizeItemTest {
when(routingContext.response()).thenReturn(serverResponse);
when(serverResponse.bytesWritten()).thenReturn(bytesWritten);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals(String.valueOf(bytesWritten), strBuilder.toString());
}
@Test
public void clientFormattedElement() {
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("0", strBuilder.toString());
}
@Test
public void getFormattedElementOnResponseIsNull() {
when(routingContext.response()).thenReturn(null);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("0", strBuilder.toString());
}
@@ -81,7 +81,7 @@ public class ResponseSizeItemTest {
long bytesWritten = 0L;
when(routingContext.response()).thenReturn(serverResponse);
when(serverResponse.bytesWritten()).thenReturn(bytesWritten);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("0", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/TraceIdItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/TraceIdItemTest.java
similarity index 87%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/TraceIdItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/TraceIdItemTest.java
index 779561d..e6578cf 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/TraceIdItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/TraceIdItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.hamcrest.core.Is.is;
import static org.mockito.Mockito.when;
@@ -37,7 +37,7 @@ import io.vertx.core.http.HttpServerRequest;
import io.vertx.ext.web.RoutingContext;
public class TraceIdItemTest {
- private static final TraceIdItem ELEMENT = new TraceIdItem();
+ private static final TraceIdItemAccess ELEMENT = new TraceIdItemAccess();
private StringBuilder strBuilder;
@@ -74,7 +74,7 @@ public class TraceIdItemTest {
when(routingContext.data()).thenReturn(data);
data.put(RestConst.REST_INVOCATION_CONTEXT, invocation);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertThat(strBuilder.toString(), is(traceIdTest));
}
@@ -85,7 +85,7 @@ public class TraceIdItemTest {
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getContext()).thenReturn(clientContext);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertThat(strBuilder.toString(), is(traceIdTest));
}
@@ -99,7 +99,7 @@ public class TraceIdItemTest {
when(serverRequest.getHeader(Const.TRACE_ID_NAME)).thenReturn(traceIdTest);
when(routingContext.request()).thenReturn(serverRequest);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertThat(strBuilder.toString(), is(traceIdTest));
}
@@ -112,12 +112,12 @@ public class TraceIdItemTest {
when(serverRequest.getHeader(Const.TRACE_ID_NAME)).thenReturn(null);
when(routingContext.request()).thenReturn(serverRequest);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertThat(strBuilder.toString(), is("-"));
strBuilder = new StringBuilder();
when(invocation.getContext(Const.TRACE_ID_NAME)).thenReturn(null);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertThat(strBuilder.toString(), is("-"));
}
@@ -127,7 +127,7 @@ public class TraceIdItemTest {
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getContext()).thenReturn(clientContext);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertThat(strBuilder.toString(), is("-"));
}
@@ -136,7 +136,7 @@ public class TraceIdItemTest {
when(routingContext.data()).thenReturn(null);
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.getHeader(Const.TRACE_ID_NAME)).thenReturn(null);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertThat(strBuilder.toString(), is("-"));
}
@@ -145,7 +145,7 @@ public class TraceIdItemTest {
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getContext()).thenReturn(null);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertThat(strBuilder.toString(), is("-"));
}
@@ -154,7 +154,7 @@ public class TraceIdItemTest {
when(serverRequest.getHeader(Const.TRACE_ID_NAME)).thenReturn(null);
when(routingContext.request()).thenReturn(serverRequest);
when(routingContext.data()).thenReturn(null);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertThat(strBuilder.toString(), is("-"));
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/TransportItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/TransportItemTest.java
similarity index 86%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/TransportItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/TransportItemTest.java
index e3da5f4..21dc041 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/TransportItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/TransportItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.mockito.Mockito.when;
@@ -29,7 +29,7 @@ import org.junit.Test;
import org.mockito.Mockito;
public class TransportItemTest {
- private static final TransportItem ITEM = new TransportItem();
+ private static final TransportItemAccess ITEM = new TransportItemAccess();
private StringBuilder strBuilder;
@@ -54,21 +54,21 @@ public class TransportItemTest {
public void clientFormattedElement() {
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getConfigTransportName()).thenReturn("rest");
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertEquals("rest", strBuilder.toString());
strBuilder = new StringBuilder();
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getEndpoint()).thenReturn(endpoint);
when(endpoint.getEndpoint()).thenReturn("rest:xxx:30100");
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertEquals("rest", strBuilder.toString());
}
@Test
public void serverFormattedElement() {
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
- Assert.assertEquals("-", strBuilder.toString());
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
+ Assert.assertEquals("rest", strBuilder.toString());
}
@Test
@@ -80,7 +80,7 @@ public class TransportItemTest {
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getEndpoint()).thenReturn(endpoint);
when(endpoint.getEndpoint()).thenReturn("rest:xxx:30100");
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertEquals("rest", strBuilder.toString());
}
@@ -92,7 +92,7 @@ public class TransportItemTest {
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getEndpoint()).thenReturn(endpoint);
when(endpoint.getEndpoint()).thenReturn("rest:xxx:30100");
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertEquals("rest", strBuilder.toString());
}
@@ -103,7 +103,7 @@ public class TransportItemTest {
strBuilder = new StringBuilder();
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getEndpoint()).thenReturn(null);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertEquals("-", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/UrlPathItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathItemTest.java
similarity index 90%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/UrlPathItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathItemTest.java
index 00183fe..e7121a2 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/UrlPathItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.mockito.Mockito.when;
@@ -40,7 +40,7 @@ import io.vertx.core.http.HttpServerRequest;
import io.vertx.ext.web.RoutingContext;
public class UrlPathItemTest {
- private static final UrlPathItem ITEM = new UrlPathItem();
+ private static final UrlPathItemAccess ITEM = new UrlPathItemAccess();
private StringBuilder strBuilder;
@@ -91,7 +91,7 @@ public class UrlPathItemTest {
when(swagger.getBasePath()).thenReturn("/base");
when(operationMeta.getOperationPath()).thenReturn("/test");
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertEquals(uri, strBuilder.toString());
strBuilder = new StringBuilder();
@@ -103,7 +103,7 @@ public class UrlPathItemTest {
when(invocation.getHandlerContext()).thenReturn(handlerContext);
when(restClientRequest.getRequest()).thenReturn(clientRequest);
when(clientRequest.path()).thenReturn(uri);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertEquals(uri, strBuilder.toString());
}
@@ -112,14 +112,14 @@ public class UrlPathItemTest {
String uri = "/test";
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.path()).thenReturn(uri);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertEquals(uri, strBuilder.toString());
}
@Test
public void serverFormattedElementOnRequestIsNull() {
when(routingContext.request()).thenReturn(null);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertEquals("-", strBuilder.toString());
}
@@ -130,7 +130,7 @@ public class UrlPathItemTest {
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getHandlerContext()).thenReturn(handlerContext);
when(restClientRequest.getRequest()).thenReturn(null);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertEquals("-", strBuilder.toString());
}
@@ -138,7 +138,7 @@ public class UrlPathItemTest {
public void serverFormattedElementOnMethodIsNull() {
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.path()).thenReturn(null);
- ITEM.appendFormattedItem(accessLogEvent, strBuilder);
+ ITEM.appendServerFormattedItem(accessLogEvent, strBuilder);
Assert.assertEquals("-", strBuilder.toString());
}
@@ -150,7 +150,7 @@ public class UrlPathItemTest {
when(invocation.getHandlerContext()).thenReturn(handlerContext);
when(restClientRequest.getRequest()).thenReturn(clientRequest);
when(clientRequest.path()).thenReturn(null);
- ITEM.appendFormattedItem(finishEvent, strBuilder);
+ ITEM.appendClientFormattedItem(finishEvent, strBuilder);
Assert.assertEquals("-", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/UrlPathWithQueryItemTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathWithQueryItemTest.java
similarity index 84%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/UrlPathWithQueryItemTest.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathWithQueryItemTest.java
index b17fbb6..e839dc8 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/UrlPathWithQueryItemTest.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UrlPathWithQueryItemTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
@@ -33,7 +33,7 @@ import io.vertx.ext.web.RoutingContext;
public class UrlPathWithQueryItemTest {
- public static final UrlPathWithQueryItem ELEMENT = new UrlPathWithQueryItem();
+ public static final UrlPathWithQueryItemAccess ELEMENT = new UrlPathWithQueryItemAccess();
private StringBuilder strBuilder;
@@ -64,7 +64,7 @@ public class UrlPathWithQueryItemTest {
String uri = "uriTest";
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.uri()).thenReturn(uri);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals(uri, strBuilder.toString());
}
@@ -73,21 +73,21 @@ public class UrlPathWithQueryItemTest {
String uri = "uriTest";
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getLocalContext(RestConst.REST_CLIENT_REQUEST_PATH)).thenReturn(uri);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals(uri, strBuilder.toString());
}
@Test
public void serverFormattedElementOnRequestIsNull() {
when(routingContext.request()).thenReturn(null);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@Test
public void clientFormattedElementOnRequestIsNull() {
when(finishEvent.getInvocation()).thenReturn(null);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -95,7 +95,7 @@ public class UrlPathWithQueryItemTest {
public void serverFormattedElementOnUriIsNull() {
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.uri()).thenReturn(null);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -103,7 +103,7 @@ public class UrlPathWithQueryItemTest {
public void clientFormattedElementOnUriIsNull() {
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getLocalContext(RestConst.REST_CLIENT_REQUEST_PATH)).thenReturn(null);
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -111,7 +111,7 @@ public class UrlPathWithQueryItemTest {
public void serverFormattedElementOnUriIsEmpty() {
when(routingContext.request()).thenReturn(serverRequest);
when(serverRequest.uri()).thenReturn("");
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
+ ELEMENT.appendServerFormattedItem(accessLogEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
@@ -119,7 +119,7 @@ public class UrlPathWithQueryItemTest {
public void clientFormattedElementOnUriIsEmpty() {
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getLocalContext(RestConst.REST_CLIENT_REQUEST_PATH)).thenReturn("");
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
+ ELEMENT.appendClientFormattedItem(finishEvent, strBuilder);
assertEquals("-", strBuilder.toString());
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/UserDefinedAccessLogItem.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UserDefinedAccessAccessLogItem.java
similarity index 71%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/UserDefinedAccessLogItem.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UserDefinedAccessAccessLogItem.java
index da948c0..fc0102b 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/UserDefinedAccessLogItem.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UserDefinedAccessAccessLogItem.java
@@ -15,33 +15,33 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import io.vertx.ext.web.RoutingContext;
/**
* For access log extension test
*/
-public class UserDefinedAccessLogItem implements LogItem<RoutingContext> {
+public class UserDefinedAccessAccessLogItem implements AccessLogItem<RoutingContext> {
private String config;
- public UserDefinedAccessLogItem(String config) {
+ public UserDefinedAccessAccessLogItem(String config) {
this.config = config;
}
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
builder.append("user-defined-")
.append(config);
}
@Override
- public void appendFormattedItem(InvocationFinishEvent clientLogEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent clientLogEvent, StringBuilder builder) {
builder.append("user-defined-")
.append(config);
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/UserDefinedAccessLogItemLowPriority.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UserDefinedAccessAccessLogItemLowPriority.java
similarity index 71%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/UserDefinedAccessLogItemLowPriority.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UserDefinedAccessAccessLogItemLowPriority.java
index 8104129..2cf864f 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/UserDefinedAccessLogItemLowPriority.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/element/impl/UserDefinedAccessAccessLogItemLowPriority.java
@@ -15,27 +15,27 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.element.impl;
+package org.apache.servicecomb.common.accessLog.core.element.impl;
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
import io.vertx.ext.web.RoutingContext;
/**
- * For access log extension test, will be overridden by {@link RemoteHostItem}("%h"),
+ * For access log extension test, will be overridden by {@link RemoteHostItemAccess}("%h"),
* and takes no effect.
*/
-public class UserDefinedAccessLogItemLowPriority implements LogItem<RoutingContext> {
+public class UserDefinedAccessAccessLogItemLowPriority implements AccessLogItem<RoutingContext> {
@Override
- public void appendFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
+ public void appendServerFormattedItem(ServerAccessLogEvent accessLogEvent, StringBuilder builder) {
builder.append("OverriddenItem");
}
@Override
- public void appendFormattedItem(InvocationFinishEvent clientLogEvent, StringBuilder builder) {
+ public void appendClientFormattedItem(InvocationFinishEvent clientLogEvent, StringBuilder builder) {
builder.append("OverriddenItem");
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/parser/impl/TestCompositeExtendedAccessLogItemMeta.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/parser/impl/TestCompositeExtendedAccessAccessLogItemMeta.java
similarity index 56%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/parser/impl/TestCompositeExtendedAccessLogItemMeta.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/parser/impl/TestCompositeExtendedAccessAccessLogItemMeta.java
index a14913b..e44a5f0 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/parser/impl/TestCompositeExtendedAccessLogItemMeta.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/parser/impl/TestCompositeExtendedAccessAccessLogItemMeta.java
@@ -15,25 +15,25 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.parser.impl;
+package org.apache.servicecomb.common.accessLog.core.parser.impl;
import java.util.ArrayList;
import java.util.List;
-import org.apache.servicecomb.foundation.log.core.element.impl.UserDefinedAccessLogItem;
-import org.apache.servicecomb.foundation.log.core.parser.CompositeVertxRestLogItemMeta;
-import org.apache.servicecomb.foundation.log.core.parser.VertxRestLogItemMeta;
+import org.apache.servicecomb.common.accessLog.core.element.impl.UserDefinedAccessAccessLogItem;
+import org.apache.servicecomb.common.accessLog.core.parser.CompositeVertxRestAccessLogItemMeta;
+import org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta;
-public class TestCompositeExtendedAccessLogItemMeta extends CompositeVertxRestLogItemMeta {
- private static final List<VertxRestLogItemMeta> META_LIST = new ArrayList<>();
+public class TestCompositeExtendedAccessAccessLogItemMeta extends CompositeVertxRestAccessLogItemMeta {
+ private static final List<VertxRestAccessLogItemMeta> META_LIST = new ArrayList<>();
static {
- META_LIST.add(new VertxRestLogItemMeta("%{", "}user-defined", UserDefinedAccessLogItem::new));
+ META_LIST.add(new VertxRestAccessLogItemMeta("%{", "}user-defined", UserDefinedAccessAccessLogItem::new));
}
@Override
- public List<VertxRestLogItemMeta> getAccessLogItemMetas() {
+ public List<VertxRestAccessLogItemMeta> getAccessLogItemMetas() {
return META_LIST;
}
}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/parser/impl/TestSingleExtendedAccessLogItemMeta.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/parser/impl/TestSingleExtendedAccessAccessLogItemMeta.java
similarity index 62%
rename from foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/parser/impl/TestSingleExtendedAccessLogItemMeta.java
rename to common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/parser/impl/TestSingleExtendedAccessAccessLogItemMeta.java
index 46926a3..84ad0d5 100644
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/parser/impl/TestSingleExtendedAccessLogItemMeta.java
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/parser/impl/TestSingleExtendedAccessAccessLogItemMeta.java
@@ -15,13 +15,14 @@
* limitations under the License.
*/
-package org.apache.servicecomb.foundation.log.core.parser.impl;
+package org.apache.servicecomb.common.accessLog.core.parser.impl;
-import org.apache.servicecomb.foundation.log.core.element.impl.UserDefinedAccessLogItemLowPriority;
-import org.apache.servicecomb.foundation.log.core.parser.VertxRestLogItemMeta;
-public class TestSingleExtendedAccessLogItemMeta extends VertxRestLogItemMeta {
- public TestSingleExtendedAccessLogItemMeta() {
- super("%h", null, config -> new UserDefinedAccessLogItemLowPriority(), 1);
+import org.apache.servicecomb.common.accessLog.core.element.impl.UserDefinedAccessAccessLogItemLowPriority;
+import org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta;
+
+public class TestSingleExtendedAccessAccessLogItemMeta extends VertxRestAccessLogItemMeta {
+ public TestSingleExtendedAccessAccessLogItemMeta() {
+ super("%h", null, config -> new UserDefinedAccessAccessLogItemLowPriority(), 1);
}
}
diff --git a/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/parser/impl/VertxRestAccessLogPatternParserTest.java b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/parser/impl/VertxRestAccessLogPatternParserTest.java
new file mode 100644
index 0000000..61d42e9
--- /dev/null
+++ b/common/common-access-log/src/test/java/org/apache/servicecomb/common/accessLog/core/parser/impl/VertxRestAccessLogPatternParserTest.java
@@ -0,0 +1,362 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.common.accessLog.core.parser.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Locale;
+import java.util.TimeZone;
+
+import org.apache.servicecomb.common.accessLog.core.element.AccessLogItem;
+import org.apache.servicecomb.common.accessLog.core.element.impl.CookieItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.DatetimeConfigurableItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.DurationMillisecondItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.DurationSecondItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.FirstLineOfRequestItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.HttpMethodItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.HttpStatusItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.InvocationContextItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.LocalHostItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.LocalPortItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.QueryStringItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.RemoteHostItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.RequestHeaderItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.RequestProtocolItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.ResponseHeaderItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.ResponseSizeItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.TraceIdItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.TransportItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.UrlPathItemAccess;
+import org.apache.servicecomb.common.accessLog.core.element.impl.UrlPathWithQueryItemAccess;
+import org.apache.servicecomb.common.accessLog.core.parser.CompositeVertxRestAccessLogItemMeta;
+import org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta;
+import org.apache.servicecomb.core.event.ServerAccessLogEvent;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import io.vertx.ext.web.RoutingContext;
+import mockit.Deencapsulation;
+import mockit.Mock;
+import mockit.MockUp;
+
+public class VertxRestAccessLogPatternParserTest {
+ private static final String ROW_PATTERN = "[cs-method] %m %s%T%D%h%v%p%B%b%r%U%q"
+ + "cs-uri-stemcs-uri-querycs-uri%H%t%{yyyy MM dd HH:mm:ss zzz}t"
+ + "%{yyyy MM dd HH:mm:ss|GMT+0|en-US}t"
+ + "%{incoming-header}i"
+ + "%{outgoing-header}o"
+ + "%{cookie}C"
+ + "%SCB-traceId"
+ + "%{ctx}SCB-ctx"
+ + "%SCB-transport";
+
+ private static VertxRestAccessLogPatternParser logPatternParser = new VertxRestAccessLogPatternParser();
+
+ private ServerAccessLogEvent accessLogEvent;
+
+ private RoutingContext routingContext;
+
+
+ @Before
+ public void initStrBuilder() {
+ routingContext = Mockito.mock(RoutingContext.class);
+ accessLogEvent = new ServerAccessLogEvent();
+ accessLogEvent.setRoutingContext(routingContext);
+ }
+
+ @Test
+ public void testParsePatternFullTest() {
+ List<AccessLogItem<RoutingContext>> result = logPatternParser.parsePattern(ROW_PATTERN);
+ assertEquals(29, result.size());
+ StringBuilder builder = new StringBuilder();
+ result.get(0).appendServerFormattedItem(accessLogEvent, builder);
+ assertEquals("[", builder.toString());
+ assertEquals(HttpMethodItemAccess.class, result.get(1).getClass());
+ builder = new StringBuilder();
+ result.get(2).appendServerFormattedItem(accessLogEvent, builder);
+ assertEquals("] ", builder.toString());
+ assertEquals(HttpMethodItemAccess.class, result.get(3).getClass());
+ builder = new StringBuilder();
+ result.get(4).appendServerFormattedItem(accessLogEvent, builder);
+ assertEquals(" ", builder.toString());
+ assertEquals(HttpStatusItemAccess.class, result.get(5).getClass());
+ assertEquals(DurationSecondItemAccess.class, result.get(6).getClass());
+ assertEquals(DurationMillisecondItemAccess.class, result.get(7).getClass());
+ assertEquals(RemoteHostItemAccess.class, result.get(8).getClass());
+ assertEquals(LocalHostItemAccess.class, result.get(9).getClass());
+ assertEquals(LocalPortItemAccess.class, result.get(10).getClass());
+ assertEquals(ResponseSizeItemAccess.class, result.get(11).getClass());
+ assertEquals("0", ((ResponseSizeItemAccess) result.get(11)).getZeroBytes());
+ assertEquals(ResponseSizeItemAccess.class, result.get(12).getClass());
+ assertEquals("-", ((ResponseSizeItemAccess) result.get(12)).getZeroBytes());
+ assertEquals(FirstLineOfRequestItemAccess.class, result.get(13).getClass());
+ assertEquals(UrlPathItemAccess.class, result.get(14).getClass());
+ assertEquals(QueryStringItemAccess.class, result.get(15).getClass());
+ assertEquals(UrlPathItemAccess.class, result.get(16).getClass());
+ assertEquals(QueryStringItemAccess.class, result.get(17).getClass());
+ assertEquals(UrlPathWithQueryItemAccess.class, result.get(18).getClass());
+ assertEquals(RequestProtocolItemAccess.class, result.get(19).getClass());
+ assertEquals(DatetimeConfigurableItemAccess.class, result.get(20).getClass());
+ assertEquals(DatetimeConfigurableItemAccess.DEFAULT_DATETIME_PATTERN,
+ ((DatetimeConfigurableItemAccess) result.get(20)).getPattern());
+ assertEquals(DatetimeConfigurableItemAccess.DEFAULT_LOCALE, ((DatetimeConfigurableItemAccess) result.get(20)).getLocale());
+ assertEquals(TimeZone.getDefault(), ((DatetimeConfigurableItemAccess) result.get(20)).getTimezone());
+ assertEquals("yyyy MM dd HH:mm:ss zzz", ((DatetimeConfigurableItemAccess) result.get(21)).getPattern());
+ assertEquals(DatetimeConfigurableItemAccess.DEFAULT_LOCALE, ((DatetimeConfigurableItemAccess) result.get(21)).getLocale());
+ assertEquals(TimeZone.getDefault(), ((DatetimeConfigurableItemAccess) result.get(21)).getTimezone());
+ assertEquals("yyyy MM dd HH:mm:ss", ((DatetimeConfigurableItemAccess) result.get(22)).getPattern());
+ assertEquals(Locale.forLanguageTag("en-US"), ((DatetimeConfigurableItemAccess) result.get(22)).getLocale());
+ assertEquals(TimeZone.getTimeZone("GMT+0"), ((DatetimeConfigurableItemAccess) result.get(22)).getTimezone());
+ assertEquals(RequestHeaderItemAccess.class, result.get(23).getClass());
+ assertEquals("incoming-header", ((RequestHeaderItemAccess) result.get(23)).getVarName());
+ assertEquals(ResponseHeaderItemAccess.class, result.get(24).getClass());
+ assertEquals("outgoing-header", ((ResponseHeaderItemAccess) result.get(24)).getVarName());
+ assertEquals(CookieItemAccess.class, result.get(25).getClass());
+ assertEquals("cookie", ((CookieItemAccess) result.get(25)).getVarName());
+ assertEquals(TraceIdItemAccess.class, result.get(26).getClass());
+ assertEquals(InvocationContextItemAccess.class, result.get(27).getClass());
+ assertEquals("ctx", ((InvocationContextItemAccess) result.get(27)).getVarName());
+ assertEquals(TransportItemAccess.class, result.get(28).getClass());
+ }
+
+ @Test
+ public void testParsePattern() {
+ String pattern = " %m cs-uri-stem %{response-header}o ";
+ List<AccessLogItem<RoutingContext>> result = logPatternParser.parsePattern(pattern);
+ assertEquals(7, result.size());
+ StringBuilder stringBuilder = new StringBuilder();
+ result.get(0).appendServerFormattedItem(accessLogEvent, stringBuilder);
+ assertEquals(" ", stringBuilder.toString());
+ assertEquals(HttpMethodItemAccess.class, result.get(1).getClass());
+ stringBuilder = new StringBuilder();
+ result.get(2).appendServerFormattedItem(accessLogEvent, stringBuilder);
+ assertEquals(" ", stringBuilder.toString());
+ assertEquals(UrlPathItemAccess.class, result.get(3).getClass());
+ stringBuilder = new StringBuilder();
+ result.get(4).appendServerFormattedItem(accessLogEvent, stringBuilder);
+ assertEquals(" ", stringBuilder.toString());
+ assertEquals(ResponseHeaderItemAccess.class, result.get(5).getClass());
+ assertEquals("response-header", ((ResponseHeaderItemAccess) result.get(5)).getVarName());
+ stringBuilder = new StringBuilder();
+ result.get(6).appendServerFormattedItem(accessLogEvent, stringBuilder);
+ assertEquals(" ", stringBuilder.toString());
+ }
+
+ @Test
+ public void testParsePatternWithNoBlank() {
+ String pattern = "%mcs-uri-stem%{response-header}o";
+ List<AccessLogItem<RoutingContext>> result = logPatternParser.parsePattern(pattern);
+ assertEquals(3, result.size());
+
+ assertEquals(HttpMethodItemAccess.class, result.get(0).getClass());
+ assertEquals(UrlPathItemAccess.class, result.get(1).getClass());
+ assertEquals(ResponseHeaderItemAccess.class, result.get(2).getClass());
+ assertEquals("response-header", ((ResponseHeaderItemAccess) result.get(2)).getVarName());
+ }
+
+ @Test
+ public void testParsePatternComplex() {
+ String pattern = "%m cs-uri-stem %{response-header}o abc cs-uri-query %s%{request} header}i plain cs-uri";
+ List<AccessLogItem<RoutingContext>> result = logPatternParser.parsePattern(pattern);
+ assertEquals(12, result.size());
+
+ assertEquals(HttpMethodItemAccess.class, result.get(0).getClass());
+ StringBuilder stringBuilder = new StringBuilder();
+ result.get(1).appendServerFormattedItem(accessLogEvent, stringBuilder);
+ assertEquals(" ", stringBuilder.toString());
+ assertEquals(UrlPathItemAccess.class, result.get(2).getClass());
+ stringBuilder = new StringBuilder();
+ result.get(3).appendServerFormattedItem(accessLogEvent, stringBuilder);
+ assertEquals(" ", stringBuilder.toString());
+ assertEquals(ResponseHeaderItemAccess.class, result.get(4).getClass());
+ assertEquals("response-header", ((ResponseHeaderItemAccess) result.get(4)).getVarName());
+ stringBuilder = new StringBuilder();
+ result.get(5).appendServerFormattedItem(accessLogEvent, stringBuilder);
+ assertEquals(" abc ", stringBuilder.toString());
+ assertEquals(QueryStringItemAccess.class, result.get(6).getClass());
+ stringBuilder = new StringBuilder();
+ result.get(7).appendServerFormattedItem(accessLogEvent, stringBuilder);
+ assertEquals(" ", stringBuilder.toString());
+ assertEquals(HttpStatusItemAccess.class, result.get(8).getClass());
+ assertEquals(RequestHeaderItemAccess.class, result.get(9).getClass());
+ assertEquals("request} header", ((RequestHeaderItemAccess) result.get(9)).getVarName());
+ stringBuilder = new StringBuilder();
+ result.get(10).appendServerFormattedItem(accessLogEvent, stringBuilder);
+ assertEquals(" plain ", stringBuilder.toString());
+ assertEquals(UrlPathWithQueryItemAccess.class, result.get(11).getClass());
+ }
+
+ Comparator<VertxRestAccessLogItemMeta> comparator = VertxRestAccessLogPatternParser.accessLogItemMetaComparator;
+
+ /**
+ * one factor test
+ */
+ @Test
+ public void testCompareMetaSimple() {
+ Assert.assertTrue(
+ comparator.compare(
+ new VertxRestAccessLogItemMeta(null, null, null, 0),
+ new VertxRestAccessLogItemMeta(null, null, null, 1)
+ ) < 0
+ );
+ Assert.assertTrue(
+ comparator.compare(
+ new VertxRestAccessLogItemMeta(null, "}abc", null, 0),
+ new VertxRestAccessLogItemMeta(null, null, null, 0)
+ ) < 0
+ );
+ Assert.assertTrue(
+ comparator.compare(
+ new VertxRestAccessLogItemMeta(null, "}abc", null, 0),
+ new VertxRestAccessLogItemMeta(null, "}de", null, 0)
+ ) < 0
+ );
+ Assert.assertTrue(
+ comparator.compare(
+ new VertxRestAccessLogItemMeta(null, "}abc", null, 0),
+ new VertxRestAccessLogItemMeta(null, "}ab", null, 0)
+ ) < 0
+ );
+ Assert.assertTrue(
+ comparator.compare(
+ new VertxRestAccessLogItemMeta("%abc", null, null, 0),
+ new VertxRestAccessLogItemMeta("%de", null, null, 0)
+ ) < 0
+ );
+ Assert.assertTrue(
+ comparator.compare(
+ new VertxRestAccessLogItemMeta("%abc", null, null, 0),
+ new VertxRestAccessLogItemMeta("%ab", null, null, 0)
+ ) < 0
+ );
+ Assert.assertEquals(0, comparator.compare(
+ new VertxRestAccessLogItemMeta("%abc", null, null, 0),
+ new VertxRestAccessLogItemMeta("%abc", null, null, 0)
+ ));
+ }
+
+ /**
+ * multiple factors test
+ */
+ @Test
+ public void testCompareMetaComplex() {
+ Assert.assertTrue(
+ comparator.compare(
+ new VertxRestAccessLogItemMeta("%bcd", "}ab", null, 0),
+ new VertxRestAccessLogItemMeta("%abc", "}abc", null, 0)
+ ) > 0
+ );
+ Assert.assertTrue(
+ comparator.compare(
+ new VertxRestAccessLogItemMeta("%abc", null, null, 0),
+ new VertxRestAccessLogItemMeta("%bcd", "}ab", null, 0)
+ ) > 0
+ );
+ Assert.assertTrue(
+ comparator.compare(
+ new VertxRestAccessLogItemMeta("%bcd", "}abc", null, 0),
+ new VertxRestAccessLogItemMeta("%abc", "}abc", null, 0)
+ ) > 0
+ );
+ Assert.assertTrue(
+ comparator.compare(
+ new VertxRestAccessLogItemMeta("%abc", "}abc", null, 1),
+ new VertxRestAccessLogItemMeta("%ab", "}ab", null, 0)
+ ) > 0
+ );
+ }
+
+ @Test
+ public void testComparePlaceholderString() {
+ Assert.assertTrue(
+ VertxRestAccessLogPatternParser.comparePlaceholderString("abc", "bbc") < 0
+ );
+ Assert.assertTrue(
+ VertxRestAccessLogPatternParser.comparePlaceholderString("abc", "ab") < 0
+ );
+ Assert.assertEquals(0, VertxRestAccessLogPatternParser.comparePlaceholderString("abc", "abc"));
+ Assert.assertTrue(
+ VertxRestAccessLogPatternParser.comparePlaceholderString("bbc", "abc") > 0
+ );
+ Assert.assertTrue(
+ VertxRestAccessLogPatternParser.comparePlaceholderString("ab", "abc") > 0
+ );
+ }
+
+ @Test
+ public void testExtendedVertxRestAccessLogItemCreator() {
+ final List<VertxRestAccessLogItemMeta> metaList0 = new ArrayList<>();
+ metaList0.add(new VertxRestAccessLogItemMeta("%{", "}abc", null));
+ metaList0.add(new VertxRestAccessLogItemMeta("%{", "}a", null));
+ metaList0.add(new VertxRestAccessLogItemMeta("%_", null, null, -1));
+
+ final List<VertxRestAccessLogItemMeta> metaList1 = new ArrayList<>();
+ metaList0.add(new VertxRestAccessLogItemMeta("%a", "}abc", null));
+ metaList0.add(new VertxRestAccessLogItemMeta("%0", "}abc", null, 1));
+ metaList0.add(new VertxRestAccessLogItemMeta("%m", null, null));
+
+ new MockUp<VertxRestAccessLogPatternParser>() {
+ @Mock
+ List<VertxRestAccessLogItemMeta> loadVertxRestLogItemMeta() {
+ List<VertxRestAccessLogItemMeta> metaList = new ArrayList<>(1);
+ CompositeVertxRestAccessLogItemMeta compositeMeta0 = new CompositeVertxRestAccessLogItemMeta() {
+ @Override
+ public List<VertxRestAccessLogItemMeta> getAccessLogItemMetas() {
+ return metaList0;
+ }
+ };
+ CompositeVertxRestAccessLogItemMeta compositeMeta1 = new CompositeVertxRestAccessLogItemMeta() {
+ @Override
+ public List<VertxRestAccessLogItemMeta> getAccessLogItemMetas() {
+ return metaList1;
+ }
+ };
+ metaList.add(compositeMeta0);
+ metaList.add(compositeMeta1);
+ metaList.add(new VertxRestAccessLogItemMeta("%{", null, null));
+ return metaList;
+ }
+ };
+
+ VertxRestAccessLogPatternParser parser = new VertxRestAccessLogPatternParser();
+
+ List<VertxRestAccessLogItemMeta> accessLogItemMetaList =
+ Deencapsulation.getField(parser, "metaList");
+
+ assertEquals(7, accessLogItemMetaList.size());
+ assertEquals("%_", accessLogItemMetaList.get(0).getPrefix());
+ assertEquals("%a", accessLogItemMetaList.get(1).getPrefix());
+ assertEquals("}abc", accessLogItemMetaList.get(1).getSuffix());
+ assertEquals("%{", accessLogItemMetaList.get(2).getPrefix());
+ assertEquals("}abc", accessLogItemMetaList.get(2).getSuffix());
+ assertEquals("%{", accessLogItemMetaList.get(3).getPrefix());
+ assertEquals("}a", accessLogItemMetaList.get(3).getSuffix());
+ assertEquals("%m", accessLogItemMetaList.get(4).getPrefix());
+ assertNull(accessLogItemMetaList.get(4).getSuffix());
+ assertEquals("%{", accessLogItemMetaList.get(5).getPrefix());
+ assertNull(accessLogItemMetaList.get(5).getSuffix());
+ assertEquals("%0", accessLogItemMetaList.get(6).getPrefix());
+ assertEquals("}abc", accessLogItemMetaList.get(6).getSuffix());
+ }
+}
diff --git a/foundations/foundation-log/src/test/resources/META-INF/services/org.apache.servicecomb.foundation.log.core.parser.VertxRestLogItemMeta b/common/common-access-log/src/test/resources/META-INF/services/org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta
similarity index 79%
rename from foundations/foundation-log/src/test/resources/META-INF/services/org.apache.servicecomb.foundation.log.core.parser.VertxRestLogItemMeta
rename to common/common-access-log/src/test/resources/META-INF/services/org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta
index 1ef1185..07231a0 100644
--- a/foundations/foundation-log/src/test/resources/META-INF/services/org.apache.servicecomb.foundation.log.core.parser.VertxRestLogItemMeta
+++ b/common/common-access-log/src/test/resources/META-INF/services/org.apache.servicecomb.common.accessLog.core.parser.VertxRestAccessLogItemMeta
@@ -15,5 +15,5 @@
# limitations under the License.
#
-org.apache.servicecomb.foundation.log.core.parser.impl.TestCompositeExtendedAccessLogItemMeta
-org.apache.servicecomb.foundation.log.core.parser.impl.TestSingleExtendedAccessLogItemMeta
\ No newline at end of file
+org.apache.servicecomb.common.accessLog.core.parser.impl.TestCompositeExtendedAccessAccessLogItemMeta
+org.apache.servicecomb.common.accessLog.core.parser.impl.TestSingleExtendedAccessAccessLogItemMeta
\ No newline at end of file
diff --git a/common/pom.xml b/common/pom.xml
index 7ffe866..363be4e 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -31,5 +31,6 @@
<module>common-javassist</module>
<module>common-protobuf</module>
<module>common-rest</module>
+ <module>common-access-log</module>
</modules>
</project>
diff --git a/dependencies/default/pom.xml b/dependencies/default/pom.xml
index 28a9180..8995b2e 100644
--- a/dependencies/default/pom.xml
+++ b/dependencies/default/pom.xml
@@ -1066,6 +1066,11 @@
</dependency>
<dependency>
<groupId>org.apache.servicecomb</groupId>
+ <artifactId>common-access-log</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicecomb</groupId>
<artifactId>config-apollo</artifactId>
<version>${project.version}</version>
</dependency>
@@ -1122,11 +1127,6 @@
</dependency>
<dependency>
<groupId>org.apache.servicecomb</groupId>
- <artifactId>foundation-log</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.servicecomb</groupId>
<artifactId>foundation-vertx</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/README.md b/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/README.md
deleted file mode 100644
index b9e72c2..0000000
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/README.md
+++ /dev/null
@@ -1,75 +0,0 @@
-# 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
-servicecomb:
- outlog:
- enabled: true
- pattern: "%h %SCB-transport - - %t %r %s %D"
- accesslog:
- enabled: true
- pattern: "%h - - %t %r %s %B %D"
-```
-
-***Access Log Configurations in microservice.yaml***
-
-| Config Item | Range of Value | Default Value | Meaning |
-| :---------- | :------------- | :------------ | :------ |
-| servicecomb.accesslog.enabled | true/false | false | print access log if true |
-| servicecomb.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 items above can be omitted, in this case, default value will take effect.
-
-## Supported log elements
-
-***Currently Supported Elements (Apache & W3C)***
-
-| Element | Apache | W3C | Comment |
-| :---- | :----- | :-- | :------ |
-| HTTP method | %m | cs-method | |
-| HTTP status | %s | sc-status | |
-| Duration in second | %T | - | The time taken to serve the request, in seconds |
-| Duration in millisecond | %D | - | The time taken to serve the request, in millisecond |
-| Remote hostname | %h | - | |
-| Local hostname | %v | - | |
-| Local port | %p | - | |
-| Size of response | %B | - | |
-| Size of response | %b | - | In CLF format, i.e. "-" is written if response size is 0 |
-| First line of request | %r | - | |
-| URI path | %U | cs-uri-stem | |
-| Query string | %q | cs-uri-query | |
-| URI path and query string | - | cs-uri | |
-| Request protocol | %H | - | |
-| Datetime the request was received | %t | - | Write in default format, i.e. pattern is "EEE, dd MMM yyyy HH:mm:ss zzz", Locale is US and Timezone is GMT |
-| Configurable datetime the request was received | %{PATTERN|TIMEZONE|LOCALE}t | - | Write datetime in specified format pattern, timezone and locale. TIMEZONE and LOCALE can be omitted |
-| Request Header | %{VARNAME}i | - | '-' is written if not found |
-| Response header | %{VARNAME}o | - | '-' is written if not found |
-| Cookie | %{VARNAME}C | - | '-' is written if not found |
-
-***Currently Supported Elements (ServiceComb)***
-
-| Element | Placeholder | Comment |
-| :---- | :---------- | :------ |
-| TraceId | %SCB-traceId | TraceId provided by ServiceComb |
-| Invocation Context | %{VARNAME}SCB-ctx | Variable carried in invocation context, '-' is written if not found |
-
-## Access log file settings
-
-Access log will be written in a separate log file named `access.log` located in the same directory with common logs.
-
-Default access log printer is based on Log4j, users can override access log file configuration in their `log4j.properties` file.
-
-***Common access log file configuration items***
-
-| Configuration Item | Default Value | Meaning |
-| :----------------- | :------------ | :------ |
-| paas.logs.accesslog.dir | ${paas.logs.dir} | access log output directory |
-| paas.logs.accesslog.file | access.log | access log file name |
-
-## Access log item reference
-
-- [mod_log_config - Apache HTTP Server Version 2.4](http://httpd.apache.org/docs/2.4/en/mod/mod_log_config.html)
-- [Extended Log File Format](https://www.w3.org/TR/WD-logfile.html)
diff --git a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/impl/DefaultCompositeVertxRestLogItemMeta.java b/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/impl/DefaultCompositeVertxRestLogItemMeta.java
deleted file mode 100644
index b410d61..0000000
--- a/foundations/foundation-log/src/main/java/org/apache/servicecomb/foundation/log/core/parser/impl/DefaultCompositeVertxRestLogItemMeta.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.foundation.log.core.parser.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.CookieItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.DatetimeConfigurableItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.DurationMillisecondItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.DurationSecondItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.FirstLineOfRequestItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.HttpMethodItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.HttpStatusItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.TransportItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.InvocationContextItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.LocalHostItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.LocalPortItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.QueryStringItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.RemoteHostItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.RequestHeaderItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.RequestProtocolItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.ResponseHeaderItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.ResponseSizeItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.TraceIdItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.UrlPathItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.UrlPathWithQueryItem;
-import org.apache.servicecomb.foundation.log.core.parser.CompositeVertxRestLogItemMeta;
-import org.apache.servicecomb.foundation.log.core.parser.VertxRestLogItemMeta;
-
-import io.vertx.ext.web.RoutingContext;
-
-public class DefaultCompositeVertxRestLogItemMeta extends CompositeVertxRestLogItemMeta {
- private static final List<VertxRestLogItemMeta> SUPPORTED_META = new ArrayList<>();
-
- static {
- final LogItem<RoutingContext> httpMethodItem = new HttpMethodItem();
- SUPPORTED_META.add(new VertxRestLogItemMeta("%m", config -> httpMethodItem));
- SUPPORTED_META.add(new VertxRestLogItemMeta("cs-method", config -> httpMethodItem));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%s", config -> new HttpStatusItem()));
- SUPPORTED_META.add(new VertxRestLogItemMeta("sc-status", config -> new HttpStatusItem()));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%T", config -> new DurationSecondItem()));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%D", config -> new DurationMillisecondItem()));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%h", config -> new RemoteHostItem()));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%v", config -> new LocalHostItem()));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%p", config -> new LocalPortItem()));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%B", config -> new ResponseSizeItem("0")));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%b", config -> new ResponseSizeItem("-")));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%r", config -> new FirstLineOfRequestItem()));
- final LogItem<RoutingContext> urlPathItem = new UrlPathItem();
- SUPPORTED_META.add(new VertxRestLogItemMeta("%U", config -> urlPathItem));
- SUPPORTED_META.add(new VertxRestLogItemMeta("cs-uri-stem", config -> urlPathItem));
- final LogItem<RoutingContext> queryStringItem = new QueryStringItem();
- SUPPORTED_META.add(new VertxRestLogItemMeta("%q", config -> queryStringItem));
- SUPPORTED_META.add(new VertxRestLogItemMeta("cs-uri-query", config -> queryStringItem));
- SUPPORTED_META.add(new VertxRestLogItemMeta("cs-uri", config -> new UrlPathWithQueryItem()));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%H", config -> new RequestProtocolItem()));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%t", config -> new DatetimeConfigurableItem()));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%SCB-traceId", config -> new TraceIdItem()));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%SCB-transport", config -> new TransportItem()));
-
- SUPPORTED_META.add(new VertxRestLogItemMeta("%{", "}t", DatetimeConfigurableItem::new));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%{", "}i", RequestHeaderItem::new));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%{", "}o", ResponseHeaderItem::new));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%{", "}C", CookieItem::new));
- SUPPORTED_META.add(new VertxRestLogItemMeta("%{", "}SCB-ctx", InvocationContextItem::new));
- }
-
- @Override
- public List<VertxRestLogItemMeta> getAccessLogItemMetas() {
- return SUPPORTED_META;
- }
-}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/LocalHostItemTest.java b/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/LocalHostItemTest.java
deleted file mode 100644
index 18d5471..0000000
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/element/impl/LocalHostItemTest.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.foundation.log.core.element.impl;
-
-import static org.junit.Assert.assertEquals;
-
-import org.apache.servicecomb.core.event.InvocationFinishEvent;
-import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-import io.vertx.core.http.HttpServerRequest;
-import io.vertx.core.net.SocketAddress;
-import io.vertx.ext.web.RoutingContext;
-
-public class LocalHostItemTest {
- public static final LocalHostItem ELEMENT = new LocalHostItem();
-
- private StringBuilder strBuilder;
-
- private InvocationFinishEvent finishEvent;
-
- private ServerAccessLogEvent accessLogEvent;
-
- private RoutingContext routingContext;
-
- private HttpServerRequest serverRequest;
-
- private SocketAddress socketAddress;
-
- @Before
- public void initStrBuilder() {
- accessLogEvent = new ServerAccessLogEvent();
- routingContext = Mockito.mock(RoutingContext.class);
- finishEvent = Mockito.mock(InvocationFinishEvent.class);
- serverRequest = Mockito.mock(HttpServerRequest.class);
- socketAddress = Mockito.mock(SocketAddress.class);
-
- accessLogEvent.setRoutingContext(routingContext);
- strBuilder = new StringBuilder();
- }
-
- @Test
- public void clientFormattedItem() {
- ELEMENT.appendFormattedItem(finishEvent, strBuilder);
- Assert.assertEquals("-", strBuilder.toString());
- }
-
- @Test
- public void serverFormattedItem() {
- String localAddress = "192.168.0.1";
- accessLogEvent.setLocalAddress(localAddress);
- ELEMENT.appendFormattedItem(accessLogEvent, strBuilder);
- Assert.assertEquals(localAddress, strBuilder.toString());
- }
-
- @Test
- public void getLocalAddress() {
- String localHost = "testHost";
- Mockito.when(routingContext.request()).thenReturn(serverRequest);
- Mockito.when(serverRequest.localAddress()).thenReturn(socketAddress);
- Mockito.when(socketAddress.host()).thenReturn(localHost);
-
- String result = LocalHostItem.getLocalAddress(routingContext);
- assertEquals(localHost, result);
- }
-
- @Test
- public void getLocalAddressOnRequestIsNull() {
- Mockito.when(routingContext.request()).thenReturn(null);
- String result = LocalHostItem.getLocalAddress(routingContext);
- assertEquals("-", result);
- }
-
- @Test
- public void getLocalAddressOnLocalAddressIsNull() {
- Mockito.when(routingContext.request()).thenReturn(serverRequest);
- Mockito.when(serverRequest.localAddress()).thenReturn(null);
- String result = LocalHostItem.getLocalAddress(routingContext);
- assertEquals("-", result);
- }
-
- @Test
- public void getLocalAddressOnHostIsNull() {
- Mockito.when(routingContext.request()).thenReturn(serverRequest);
- Mockito.when(serverRequest.localAddress()).thenReturn(socketAddress);
- Mockito.when(socketAddress.host()).thenReturn(null);
-
- String result = LocalHostItem.getLocalAddress(routingContext);
- assertEquals("-", result);
- }
-
- @Test
- public void getLocalAddressIsEmpty() {
- String localHost = "";
- Mockito.when(routingContext.request()).thenReturn(serverRequest);
- Mockito.when(serverRequest.localAddress()).thenReturn(socketAddress);
- Mockito.when(socketAddress.host()).thenReturn(localHost);
-
- String result = LocalHostItem.getLocalAddress(routingContext);
- assertEquals("-", result);
- }
-}
diff --git a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/parser/impl/VertxRestAccessLogPatternParserTest.java b/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/parser/impl/VertxRestAccessLogPatternParserTest.java
deleted file mode 100644
index 66dfeed..0000000
--- a/foundations/foundation-log/src/test/java/org/apache/servicecomb/foundation/log/core/parser/impl/VertxRestAccessLogPatternParserTest.java
+++ /dev/null
@@ -1,362 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.foundation.log.core.parser.impl;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Locale;
-import java.util.TimeZone;
-
-import org.apache.servicecomb.core.event.ServerAccessLogEvent;
-import org.apache.servicecomb.foundation.log.core.element.LogItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.CookieItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.DatetimeConfigurableItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.DurationMillisecondItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.DurationSecondItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.FirstLineOfRequestItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.HttpMethodItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.HttpStatusItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.InvocationContextItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.LocalHostItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.LocalPortItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.QueryStringItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.RemoteHostItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.RequestHeaderItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.RequestProtocolItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.ResponseHeaderItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.ResponseSizeItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.TraceIdItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.TransportItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.UrlPathItem;
-import org.apache.servicecomb.foundation.log.core.element.impl.UrlPathWithQueryItem;
-import org.apache.servicecomb.foundation.log.core.parser.CompositeVertxRestLogItemMeta;
-import org.apache.servicecomb.foundation.log.core.parser.VertxRestLogItemMeta;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-import io.vertx.ext.web.RoutingContext;
-import mockit.Deencapsulation;
-import mockit.Mock;
-import mockit.MockUp;
-
-public class VertxRestAccessLogPatternParserTest {
- private static final String ROW_PATTERN = "[cs-method] %m %s%T%D%h%v%p%B%b%r%U%q"
- + "cs-uri-stemcs-uri-querycs-uri%H%t%{yyyy MM dd HH:mm:ss zzz}t"
- + "%{yyyy MM dd HH:mm:ss|GMT+0|en-US}t"
- + "%{incoming-header}i"
- + "%{outgoing-header}o"
- + "%{cookie}C"
- + "%SCB-traceId"
- + "%{ctx}SCB-ctx"
- + "%SCB-transport";
-
- private static VertxRestLogPatternParser logPatternParser = new VertxRestLogPatternParser();
-
- private ServerAccessLogEvent accessLogEvent;
-
- private RoutingContext routingContext;
-
-
- @Before
- public void initStrBuilder() {
- routingContext = Mockito.mock(RoutingContext.class);
- accessLogEvent = new ServerAccessLogEvent();
- accessLogEvent.setRoutingContext(routingContext);
- }
-
- @Test
- public void testParsePatternFullTest() {
- List<LogItem<RoutingContext>> result = logPatternParser.parsePattern(ROW_PATTERN);
- assertEquals(29, result.size());
- StringBuilder builder = new StringBuilder();
- result.get(0).appendFormattedItem(accessLogEvent, builder);
- assertEquals("[", builder.toString());
- assertEquals(HttpMethodItem.class, result.get(1).getClass());
- builder = new StringBuilder();
- result.get(2).appendFormattedItem(accessLogEvent, builder);
- assertEquals("] ", builder.toString());
- assertEquals(HttpMethodItem.class, result.get(3).getClass());
- builder = new StringBuilder();
- result.get(4).appendFormattedItem(accessLogEvent, builder);
- assertEquals(" ", builder.toString());
- assertEquals(HttpStatusItem.class, result.get(5).getClass());
- assertEquals(DurationSecondItem.class, result.get(6).getClass());
- assertEquals(DurationMillisecondItem.class, result.get(7).getClass());
- assertEquals(RemoteHostItem.class, result.get(8).getClass());
- assertEquals(LocalHostItem.class, result.get(9).getClass());
- assertEquals(LocalPortItem.class, result.get(10).getClass());
- assertEquals(ResponseSizeItem.class, result.get(11).getClass());
- assertEquals("0", ((ResponseSizeItem) result.get(11)).getZeroBytes());
- assertEquals(ResponseSizeItem.class, result.get(12).getClass());
- assertEquals("-", ((ResponseSizeItem) result.get(12)).getZeroBytes());
- assertEquals(FirstLineOfRequestItem.class, result.get(13).getClass());
- assertEquals(UrlPathItem.class, result.get(14).getClass());
- assertEquals(QueryStringItem.class, result.get(15).getClass());
- assertEquals(UrlPathItem.class, result.get(16).getClass());
- assertEquals(QueryStringItem.class, result.get(17).getClass());
- assertEquals(UrlPathWithQueryItem.class, result.get(18).getClass());
- assertEquals(RequestProtocolItem.class, result.get(19).getClass());
- assertEquals(DatetimeConfigurableItem.class, result.get(20).getClass());
- assertEquals(DatetimeConfigurableItem.DEFAULT_DATETIME_PATTERN,
- ((DatetimeConfigurableItem) result.get(20)).getPattern());
- assertEquals(DatetimeConfigurableItem.DEFAULT_LOCALE, ((DatetimeConfigurableItem) result.get(20)).getLocale());
- assertEquals(TimeZone.getDefault(), ((DatetimeConfigurableItem) result.get(20)).getTimezone());
- assertEquals("yyyy MM dd HH:mm:ss zzz", ((DatetimeConfigurableItem) result.get(21)).getPattern());
- assertEquals(DatetimeConfigurableItem.DEFAULT_LOCALE, ((DatetimeConfigurableItem) result.get(21)).getLocale());
- assertEquals(TimeZone.getDefault(), ((DatetimeConfigurableItem) result.get(21)).getTimezone());
- assertEquals("yyyy MM dd HH:mm:ss", ((DatetimeConfigurableItem) result.get(22)).getPattern());
- assertEquals(Locale.forLanguageTag("en-US"), ((DatetimeConfigurableItem) result.get(22)).getLocale());
- assertEquals(TimeZone.getTimeZone("GMT+0"), ((DatetimeConfigurableItem) result.get(22)).getTimezone());
- assertEquals(RequestHeaderItem.class, result.get(23).getClass());
- assertEquals("incoming-header", ((RequestHeaderItem) result.get(23)).getVarName());
- assertEquals(ResponseHeaderItem.class, result.get(24).getClass());
- assertEquals("outgoing-header", ((ResponseHeaderItem) result.get(24)).getVarName());
- assertEquals(CookieItem.class, result.get(25).getClass());
- assertEquals("cookie", ((CookieItem) result.get(25)).getVarName());
- assertEquals(TraceIdItem.class, result.get(26).getClass());
- assertEquals(InvocationContextItem.class, result.get(27).getClass());
- assertEquals("ctx", ((InvocationContextItem) result.get(27)).getVarName());
- assertEquals(TransportItem.class, result.get(28).getClass());
- }
-
- @Test
- public void testParsePattern() {
- String pattern = " %m cs-uri-stem %{response-header}o ";
- List<LogItem<RoutingContext>> result = logPatternParser.parsePattern(pattern);
- assertEquals(7, result.size());
- StringBuilder stringBuilder = new StringBuilder();
- result.get(0).appendFormattedItem(accessLogEvent, stringBuilder);
- assertEquals(" ", stringBuilder.toString());
- assertEquals(HttpMethodItem.class, result.get(1).getClass());
- stringBuilder = new StringBuilder();
- result.get(2).appendFormattedItem(accessLogEvent, stringBuilder);
- assertEquals(" ", stringBuilder.toString());
- assertEquals(UrlPathItem.class, result.get(3).getClass());
- stringBuilder = new StringBuilder();
- result.get(4).appendFormattedItem(accessLogEvent, stringBuilder);
- assertEquals(" ", stringBuilder.toString());
- assertEquals(ResponseHeaderItem.class, result.get(5).getClass());
- assertEquals("response-header", ((ResponseHeaderItem) result.get(5)).getVarName());
- stringBuilder = new StringBuilder();
- result.get(6).appendFormattedItem(accessLogEvent, stringBuilder);
- assertEquals(" ", stringBuilder.toString());
- }
-
- @Test
- public void testParsePatternWithNoBlank() {
- String pattern = "%mcs-uri-stem%{response-header}o";
- List<LogItem<RoutingContext>> result = logPatternParser.parsePattern(pattern);
- assertEquals(3, result.size());
-
- assertEquals(HttpMethodItem.class, result.get(0).getClass());
- assertEquals(UrlPathItem.class, result.get(1).getClass());
- assertEquals(ResponseHeaderItem.class, result.get(2).getClass());
- assertEquals("response-header", ((ResponseHeaderItem) result.get(2)).getVarName());
- }
-
- @Test
- public void testParsePatternComplex() {
- String pattern = "%m cs-uri-stem %{response-header}o abc cs-uri-query %s%{request} header}i plain cs-uri";
- List<LogItem<RoutingContext>> result = logPatternParser.parsePattern(pattern);
- assertEquals(12, result.size());
-
- assertEquals(HttpMethodItem.class, result.get(0).getClass());
- StringBuilder stringBuilder = new StringBuilder();
- result.get(1).appendFormattedItem(accessLogEvent, stringBuilder);
- assertEquals(" ", stringBuilder.toString());
- assertEquals(UrlPathItem.class, result.get(2).getClass());
- stringBuilder = new StringBuilder();
- result.get(3).appendFormattedItem(accessLogEvent, stringBuilder);
- assertEquals(" ", stringBuilder.toString());
- assertEquals(ResponseHeaderItem.class, result.get(4).getClass());
- assertEquals("response-header", ((ResponseHeaderItem) result.get(4)).getVarName());
- stringBuilder = new StringBuilder();
- result.get(5).appendFormattedItem(accessLogEvent, stringBuilder);
- assertEquals(" abc ", stringBuilder.toString());
- assertEquals(QueryStringItem.class, result.get(6).getClass());
- stringBuilder = new StringBuilder();
- result.get(7).appendFormattedItem(accessLogEvent, stringBuilder);
- assertEquals(" ", stringBuilder.toString());
- assertEquals(HttpStatusItem.class, result.get(8).getClass());
- assertEquals(RequestHeaderItem.class, result.get(9).getClass());
- assertEquals("request} header", ((RequestHeaderItem) result.get(9)).getVarName());
- stringBuilder = new StringBuilder();
- result.get(10).appendFormattedItem(accessLogEvent, stringBuilder);
- assertEquals(" plain ", stringBuilder.toString());
- assertEquals(UrlPathWithQueryItem.class, result.get(11).getClass());
- }
-
- Comparator<VertxRestLogItemMeta> comparator = VertxRestLogPatternParser.accessLogItemMetaComparator;
-
- /**
- * one factor test
- */
- @Test
- public void testCompareMetaSimple() {
- Assert.assertTrue(
- comparator.compare(
- new VertxRestLogItemMeta(null, null, null, 0),
- new VertxRestLogItemMeta(null, null, null, 1)
- ) < 0
- );
- Assert.assertTrue(
- comparator.compare(
- new VertxRestLogItemMeta(null, "}abc", null, 0),
- new VertxRestLogItemMeta(null, null, null, 0)
- ) < 0
- );
- Assert.assertTrue(
- comparator.compare(
- new VertxRestLogItemMeta(null, "}abc", null, 0),
- new VertxRestLogItemMeta(null, "}de", null, 0)
- ) < 0
- );
- Assert.assertTrue(
- comparator.compare(
- new VertxRestLogItemMeta(null, "}abc", null, 0),
- new VertxRestLogItemMeta(null, "}ab", null, 0)
- ) < 0
- );
- Assert.assertTrue(
- comparator.compare(
- new VertxRestLogItemMeta("%abc", null, null, 0),
- new VertxRestLogItemMeta("%de", null, null, 0)
- ) < 0
- );
- Assert.assertTrue(
- comparator.compare(
- new VertxRestLogItemMeta("%abc", null, null, 0),
- new VertxRestLogItemMeta("%ab", null, null, 0)
- ) < 0
- );
- Assert.assertEquals(0, comparator.compare(
- new VertxRestLogItemMeta("%abc", null, null, 0),
- new VertxRestLogItemMeta("%abc", null, null, 0)
- ));
- }
-
- /**
- * multiple factors test
- */
- @Test
- public void testCompareMetaComplex() {
- Assert.assertTrue(
- comparator.compare(
- new VertxRestLogItemMeta("%bcd", "}ab", null, 0),
- new VertxRestLogItemMeta("%abc", "}abc", null, 0)
- ) > 0
- );
- Assert.assertTrue(
- comparator.compare(
- new VertxRestLogItemMeta("%abc", null, null, 0),
- new VertxRestLogItemMeta("%bcd", "}ab", null, 0)
- ) > 0
- );
- Assert.assertTrue(
- comparator.compare(
- new VertxRestLogItemMeta("%bcd", "}abc", null, 0),
- new VertxRestLogItemMeta("%abc", "}abc", null, 0)
- ) > 0
- );
- Assert.assertTrue(
- comparator.compare(
- new VertxRestLogItemMeta("%abc", "}abc", null, 1),
- new VertxRestLogItemMeta("%ab", "}ab", null, 0)
- ) > 0
- );
- }
-
- @Test
- public void testComparePlaceholderString() {
- Assert.assertTrue(
- VertxRestLogPatternParser.comparePlaceholderString("abc", "bbc") < 0
- );
- Assert.assertTrue(
- VertxRestLogPatternParser.comparePlaceholderString("abc", "ab") < 0
- );
- Assert.assertEquals(0, VertxRestLogPatternParser.comparePlaceholderString("abc", "abc"));
- Assert.assertTrue(
- VertxRestLogPatternParser.comparePlaceholderString("bbc", "abc") > 0
- );
- Assert.assertTrue(
- VertxRestLogPatternParser.comparePlaceholderString("ab", "abc") > 0
- );
- }
-
- @Test
- public void testExtendedVertxRestAccessLogItemCreator() {
- final List<VertxRestLogItemMeta> metaList0 = new ArrayList<>();
- metaList0.add(new VertxRestLogItemMeta("%{", "}abc", null));
- metaList0.add(new VertxRestLogItemMeta("%{", "}a", null));
- metaList0.add(new VertxRestLogItemMeta("%_", null, null, -1));
-
- final List<VertxRestLogItemMeta> metaList1 = new ArrayList<>();
- metaList0.add(new VertxRestLogItemMeta("%a", "}abc", null));
- metaList0.add(new VertxRestLogItemMeta("%0", "}abc", null, 1));
- metaList0.add(new VertxRestLogItemMeta("%m", null, null));
-
- new MockUp<VertxRestLogPatternParser>() {
- @Mock
- List<VertxRestLogItemMeta> loadVertxRestLogItemMeta() {
- List<VertxRestLogItemMeta> metaList = new ArrayList<>(1);
- CompositeVertxRestLogItemMeta compositeMeta0 = new CompositeVertxRestLogItemMeta() {
- @Override
- public List<VertxRestLogItemMeta> getAccessLogItemMetas() {
- return metaList0;
- }
- };
- CompositeVertxRestLogItemMeta compositeMeta1 = new CompositeVertxRestLogItemMeta() {
- @Override
- public List<VertxRestLogItemMeta> getAccessLogItemMetas() {
- return metaList1;
- }
- };
- metaList.add(compositeMeta0);
- metaList.add(compositeMeta1);
- metaList.add(new VertxRestLogItemMeta("%{", null, null));
- return metaList;
- }
- };
-
- VertxRestLogPatternParser parser = new VertxRestLogPatternParser();
-
- List<VertxRestLogItemMeta> accessLogItemMetaList =
- Deencapsulation.getField(parser, "metaList");
-
- assertEquals(7, accessLogItemMetaList.size());
- assertEquals("%_", accessLogItemMetaList.get(0).getPrefix());
- assertEquals("%a", accessLogItemMetaList.get(1).getPrefix());
- assertEquals("}abc", accessLogItemMetaList.get(1).getSuffix());
- assertEquals("%{", accessLogItemMetaList.get(2).getPrefix());
- assertEquals("}abc", accessLogItemMetaList.get(2).getSuffix());
- assertEquals("%{", accessLogItemMetaList.get(3).getPrefix());
- assertEquals("}a", accessLogItemMetaList.get(3).getSuffix());
- assertEquals("%m", accessLogItemMetaList.get(4).getPrefix());
- assertNull(accessLogItemMetaList.get(4).getSuffix());
- assertEquals("%{", accessLogItemMetaList.get(5).getPrefix());
- assertNull(accessLogItemMetaList.get(5).getSuffix());
- assertEquals("%0", accessLogItemMetaList.get(6).getPrefix());
- assertEquals("}abc", accessLogItemMetaList.get(6).getSuffix());
- }
-}
diff --git a/transports/transport-rest/transport-rest-vertx/pom.xml b/transports/transport-rest/transport-rest-vertx/pom.xml
index 7bc43d9..a1be5e7 100644
--- a/transports/transport-rest/transport-rest-vertx/pom.xml
+++ b/transports/transport-rest/transport-rest-vertx/pom.xml
@@ -33,10 +33,6 @@
<artifactId>transport-rest-client</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.servicecomb</groupId>
- <artifactId>foundation-log</artifactId>
- </dependency>
- <dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-codegen</artifactId>
<scope>provided</scope>
@@ -56,5 +52,9 @@
<groupId>org.apache.servicecomb</groupId>
<artifactId>foundation-test-scaffolding</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.servicecomb</groupId>
+ <artifactId>common-access-log</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestServerVerticle.java b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestServerVerticle.java
index 15de1da..5ffe923 100644
--- a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestServerVerticle.java
+++ b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestServerVerticle.java
@@ -24,6 +24,8 @@ import java.util.Set;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
+import org.apache.servicecomb.common.accessLog.AccessLogConfig;
+import org.apache.servicecomb.common.accessLog.core.element.impl.LocalHostItemAccess;
import org.apache.servicecomb.common.rest.codec.RestObjectMapperFactory;
import org.apache.servicecomb.core.Endpoint;
import org.apache.servicecomb.core.event.ServerAccessLogEvent;
@@ -32,8 +34,7 @@ import org.apache.servicecomb.foundation.common.event.EventManager;
import org.apache.servicecomb.foundation.common.net.URIEndpointObject;
import org.apache.servicecomb.foundation.common.utils.ExceptionUtils;
import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
-import org.apache.servicecomb.foundation.log.LogConfig;
-import org.apache.servicecomb.foundation.log.core.element.impl.LocalHostItem;
+
import org.apache.servicecomb.foundation.ssl.SSLCustom;
import org.apache.servicecomb.foundation.ssl.SSLOption;
import org.apache.servicecomb.foundation.ssl.SSLOptionFactory;
@@ -163,15 +164,15 @@ public class RestServerVerticle extends AbstractVerticle {
}
private void mountAccessLogHandler(Router mainRouter) {
- if (!LogConfig.INSTANCE.isServerLogEnabled()) {
+ if (!AccessLogConfig.INSTANCE.isServerLogEnabled()) {
return;
}
- LOGGER.info("access log enabled, pattern = {}", LogConfig.INSTANCE.getServerLogPattern());
+ LOGGER.info("access log enabled, pattern = {}", AccessLogConfig.INSTANCE.getServerLogPattern());
mainRouter.route().handler(context -> {
ServerAccessLogEvent accessLogEvent = new ServerAccessLogEvent()
.setRoutingContext(context)
.setMilliStartTime(System.currentTimeMillis())
- .setLocalAddress(LocalHostItem.getLocalAddress(context));
+ .setLocalAddress(LocalHostItemAccess.getLocalAddress(context));
context.response().endHandler(event ->
EventManager.post(accessLogEvent.setMilliEndTime(System.currentTimeMillis())));
context.next();