Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
9de93119
S
SkyWalking
项目概览
apache
/
SkyWalking
上一次同步 大约 1 年
通知
302
Star
21345
Fork
6091
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
9de93119
编写于
2月 21, 2021
作者:
Z
Zhenxu Ke
提交者:
GitHub
2月 21, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Enhance gRPC log appender to allow layout pattern (#6403)
上级
317a6580
变更
16
隐藏空白更改
内联
并排
Showing
16 changed file
with
175 addition
and
52 deletion
+175
-52
.github/actions/e2e-test/action.yml
.github/actions/e2e-test/action.yml
+18
-1
.github/actions/plugins-test/action.yml
.github/actions/plugins-test/action.yml
+11
-0
.github/workflows/e2e.istio.yaml
.github/workflows/e2e.istio.yaml
+34
-2
CHANGES.md
CHANGES.md
+1
-0
apm-application-toolkit/apm-toolkit-log4j-1.x/src/main/java/org/apache/skywalking/apm/toolkit/log/log4j/v1/x/log/GRPCLogClientAppender.java
...apm/toolkit/log/log4j/v1/x/log/GRPCLogClientAppender.java
+10
-1
apm-application-toolkit/apm-toolkit-log4j-2.x/src/main/java/org/apache/skywalking/apm/toolkit/log/log4j/v2/x/log/GRPCLogClientAppender.java
...apm/toolkit/log/log4j/v2/x/log/GRPCLogClientAppender.java
+33
-8
apm-application-toolkit/apm-toolkit-logback-1.x/src/main/java/org/apache/skywalking/apm/toolkit/log/logback/v1/x/log/GRPCLogClientAppender.java
...m/toolkit/log/logback/v1/x/log/GRPCLogClientAppender.java
+13
-4
apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/src/main/java/org/apache/skywalking/apm/toolkit/activation/log/log4j/v1/x/log/GRPCLogAppenderInterceptor.java
...vation/log/log4j/v1/x/log/GRPCLogAppenderInterceptor.java
+12
-7
apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/src/main/java/org/apache/skywalking/apm/toolkit/activation/log/log4j/v2/x/log/GRPCLogAppenderInterceptor.java
...vation/log/log4j/v2/x/log/GRPCLogAppenderInterceptor.java
+10
-5
apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/src/main/java/org/apache/skywalking/apm/toolkit/activation/log/logback/v1/x/log/GRPCLogAppenderActivation.java
...ation/log/logback/v1/x/log/GRPCLogAppenderActivation.java
+1
-1
apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/src/main/java/org/apache/skywalking/apm/toolkit/activation/log/logback/v1/x/log/GRPCLogAppenderInterceptor.java
...tion/log/logback/v1/x/log/GRPCLogAppenderInterceptor.java
+9
-17
test/e2e/e2e-service-provider/pom.xml
test/e2e/e2e-service-provider/pom.xml
+0
-1
test/e2e/e2e-service-provider/src/main/resources/log4j.properties
.../e2e-service-provider/src/main/resources/log4j.properties
+3
-1
test/e2e/e2e-service-provider/src/main/resources/log4j2.xml
test/e2e/e2e-service-provider/src/main/resources/log4j2.xml
+4
-2
test/e2e/e2e-service-provider/src/main/resources/logback.xml
test/e2e/e2e-service-provider/src/main/resources/logback.xml
+8
-2
test/e2e/pom.xml
test/e2e/pom.xml
+8
-0
未找到文件。
.github/actions/e2e-test/action.yml
浏览文件 @
9de93119
...
@@ -25,6 +25,17 @@ inputs:
...
@@ -25,6 +25,17 @@ inputs:
runs
:
runs
:
using
:
"
composite"
using
:
"
composite"
steps
:
steps
:
-
name
:
Check Unintended Changes
shell
:
bash
run
:
|
echo "::group::Check sw.version"
sudo apt install -y -q xmlstarlet
SW_VERSION=$(xmlstarlet sel -N pom=http://maven.apache.org/POM/4.0.0 -t -v "/pom:project/pom:properties/pom:sw.version" test/e2e/pom.xml)
if [[ "$(echo $(echo $SW_VERSION))" != "" ]]; then
echo "Please don't submit the change of sw.version in test/e2e/pom.xml"
exit 1
fi
echo "::endgroup::"
-
name
:
Check License
-
name
:
Check License
shell
:
bash
shell
:
bash
run
:
|
run
:
|
...
@@ -53,8 +64,14 @@ runs:
...
@@ -53,8 +64,14 @@ runs:
-
name
:
Run E2E Test
-
name
:
Run E2E Test
shell
:
bash
shell
:
bash
run
:
|
run
:
|
echo "::group::Install SNAPSHOT apm-application-toolkit"
./mvnw -DskipTests -N install
./mvnw -f apm-application-toolkit -DskipTests -am install
echo "::endgroup::"
echo "::group::Run E2E Test ${{ inputs.test_class }}"
echo "::group::Run E2E Test ${{ inputs.test_class }}"
./mvnw --batch-mode -f test/e2e/pom.xml -am -DfailIfNoTests=false verify -Dit.test=${{ inputs.test_class }}
SW_VERSION=$(./mvnw -q -DforceStdout -N org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version)
./mvnw --batch-mode -f test/e2e/pom.xml -am -DfailIfNoTests=false -Dsw.version=${SW_VERSION} verify -Dit.test=${{ inputs.test_class }}
echo "::endgroup::"
echo "::endgroup::"
-
name
:
Report Coverage
-
name
:
Report Coverage
shell
:
bash
shell
:
bash
...
...
.github/actions/plugins-test/action.yml
浏览文件 @
9de93119
...
@@ -29,6 +29,17 @@ inputs:
...
@@ -29,6 +29,17 @@ inputs:
runs
:
runs
:
using
:
"
composite"
using
:
"
composite"
steps
:
steps
:
-
name
:
Check Unintended Changes
shell
:
bash
run
:
|
echo "::group::Check sw.version"
sudo apt install -y -q xmlstarlet
SW_VERSION=$(xmlstarlet sel -N pom=http://maven.apache.org/POM/4.0.0 -t -v "/pom:project/pom:properties/pom:sw.version" test/e2e/pom.xml)
if [[ "$(echo $(echo $SW_VERSION))" != "" ]]; then
echo "Please don't submit the change of sw.version in test/e2e/pom.xml"
exit 1
fi
echo "::endgroup::"
-
name
:
Check License
-
name
:
Check License
shell
:
bash
shell
:
bash
run
:
|
run
:
|
...
...
.github/workflows/e2e.istio.yaml
浏览文件 @
9de93119
...
@@ -48,6 +48,17 @@ jobs:
...
@@ -48,6 +48,17 @@ jobs:
with
:
with
:
submodules
:
true
submodules
:
true
-
name
:
Check Unintended Changes
run
:
|
echo "::group::Check sw.version"
sudo apt install -y -q xmlstarlet
SW_VERSION=$(xmlstarlet sel -N pom=http://maven.apache.org/POM/4.0.0 -t -v "/pom:project/pom:properties/pom:sw.version" test/e2e/pom.xml)
if [[ "$(echo $(echo $SW_VERSION))" != "" ]]; then
echo "::error Please don't submit the change of sw.version in test/e2e/pom.xml"
exit 1
fi
echo "::endgroup::"
-
name
:
Set Skip Env Var
-
name
:
Set Skip Env Var
uses
:
./.github/actions/skip
uses
:
./.github/actions/skip
...
@@ -132,7 +143,12 @@ jobs:
...
@@ -132,7 +143,12 @@ jobs:
export WEBAPP_HOST=127.0.0.1
export WEBAPP_HOST=127.0.0.1
export WEBAPP_PORT=8080
export WEBAPP_PORT=8080
./mvnw --batch-mode -f test/e2e/pom.xml -am -DfailIfNoTests=false verify -Dit.test=org.apache.skywalking.e2e.mesh.ALSE2E
export SW_VERSION=$(./mvnw -q -DforceStdout -N org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version)
./mvnw -DskipTests -N install
./mvnw -f apm-application-toolkit -DskipTests -am install
./mvnw --batch-mode -f test/e2e/pom.xml -am -DfailIfNoTests=false -Dsw.version=${SW_VERSION} verify -Dit.test=org.apache.skywalking.e2e.mesh.ALSE2E
-
name
:
Logs
-
name
:
Logs
if
:
${{ failure() }}
if
:
${{ failure() }}
...
@@ -162,6 +178,17 @@ jobs:
...
@@ -162,6 +178,17 @@ jobs:
with
:
with
:
submodules
:
true
submodules
:
true
-
name
:
Check Unintended Changes
run
:
|
echo "::group::Check sw.version"
sudo apt install -y -q xmlstarlet
SW_VERSION=$(xmlstarlet sel -N pom=http://maven.apache.org/POM/4.0.0 -t -v "/pom:project/pom:properties/pom:sw.version" test/e2e/pom.xml)
if [[ "$(echo $(echo $SW_VERSION))" != "" ]]; then
echo "Please don't submit the change of sw.version in test/e2e/pom.xml"
exit 1
fi
echo "::endgroup::"
-
name
:
Set Skip Env Var
-
name
:
Set Skip Env Var
uses
:
./.github/actions/skip
uses
:
./.github/actions/skip
...
@@ -246,7 +273,12 @@ jobs:
...
@@ -246,7 +273,12 @@ jobs:
export WEBAPP_HOST=127.0.0.1
export WEBAPP_HOST=127.0.0.1
export WEBAPP_PORT=8080
export WEBAPP_PORT=8080
./mvnw --batch-mode -f test/e2e/pom.xml -am -DfailIfNoTests=false verify -Dit.test=org.apache.skywalking.e2e.mesh.MetricsServiceE2E
export SW_VERSION=$(./mvnw -q -DforceStdout -N org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version)
./mvnw -DskipTests -N install
./mvnw -f apm-application-toolkit -DskipTests -am install
./mvnw --batch-mode -f test/e2e/pom.xml -am -DfailIfNoTests=false -Dsw.version=${SW_VERSION} verify -Dit.test=org.apache.skywalking.e2e.mesh.MetricsServiceE2E
-
name
:
Logs
-
name
:
Logs
if
:
${{ failure() }}
if
:
${{ failure() }}
...
...
CHANGES.md
浏览文件 @
9de93119
...
@@ -13,6 +13,7 @@ Release Notes.
...
@@ -13,6 +13,7 @@ Release Notes.
*
Add net.bytebuddy.agent.builder.AgentBuilder.RedefinitionStrategy.Listener to show detail message when redefine errors occur.
*
Add net.bytebuddy.agent.builder.AgentBuilder.RedefinitionStrategy.Listener to show detail message when redefine errors occur.
*
Fix ClassCastException of log4j gRPC reporter.
*
Fix ClassCastException of log4j gRPC reporter.
*
Fix NPE when Kafka reporter activated.
*
Fix NPE when Kafka reporter activated.
*
Enhance gRPC log appender to allow layout pattern.
#### OAP-Backend
#### OAP-Backend
*
Allow user-defined
`JAVA_OPTS`
in the startup script.
*
Allow user-defined
`JAVA_OPTS`
in the startup script.
...
...
apm-application-toolkit/apm-toolkit-log4j-1.x/src/main/java/org/apache/skywalking/apm/toolkit/log/log4j/v1/x/log/GRPCLogClientAppender.java
浏览文件 @
9de93119
...
@@ -19,9 +19,18 @@
...
@@ -19,9 +19,18 @@
package
org.apache.skywalking.apm.toolkit.log.log4j.v1.x.log
;
package
org.apache.skywalking.apm.toolkit.log.log4j.v1.x.log
;
import
org.apache.log4j.AppenderSkeleton
;
import
org.apache.log4j.AppenderSkeleton
;
import
org.apache.log4j.Layout
;
import
org.apache.log4j.spi.LoggingEvent
;
import
org.apache.log4j.spi.LoggingEvent
;
public
class
GRPCLogClientAppender
extends
AppenderSkeleton
{
public
class
GRPCLogClientAppender
extends
AppenderSkeleton
{
public
GRPCLogClientAppender
()
{
}
public
GRPCLogClientAppender
(
Layout
layout
)
{
this
.
setLayout
(
layout
);
}
@Override
@Override
protected
void
append
(
LoggingEvent
loggingEvent
)
{
protected
void
append
(
LoggingEvent
loggingEvent
)
{
...
@@ -34,6 +43,6 @@ public class GRPCLogClientAppender extends AppenderSkeleton {
...
@@ -34,6 +43,6 @@ public class GRPCLogClientAppender extends AppenderSkeleton {
@Override
@Override
public
boolean
requiresLayout
()
{
public
boolean
requiresLayout
()
{
return
fals
e
;
return
tru
e
;
}
}
}
}
apm-application-toolkit/apm-toolkit-log4j-2.x/src/main/java/org/apache/skywalking/apm/toolkit/log/log4j/v2/x/log/GRPCLogClientAppender.java
浏览文件 @
9de93119
...
@@ -18,9 +18,14 @@
...
@@ -18,9 +18,14 @@
package
org.apache.skywalking.apm.toolkit.log.log4j.v2.x.log
;
package
org.apache.skywalking.apm.toolkit.log.log4j.v2.x.log
;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
java.io.Serializable
;
import
org.apache.logging.log4j.core.Filter
;
import
org.apache.logging.log4j.core.Filter
;
import
org.apache.logging.log4j.core.Layout
;
import
org.apache.logging.log4j.core.LogEvent
;
import
org.apache.logging.log4j.core.LogEvent
;
import
org.apache.logging.log4j.core.appender.AbstractAppender
;
import
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender
;
import
org.apache.logging.log4j.core.appender.OutputStreamManager
;
import
org.apache.logging.log4j.core.config.Configuration
;
import
org.apache.logging.log4j.core.config.Configuration
;
import
org.apache.logging.log4j.core.config.plugins.Plugin
;
import
org.apache.logging.log4j.core.config.plugins.Plugin
;
import
org.apache.logging.log4j.core.config.plugins.PluginAttribute
;
import
org.apache.logging.log4j.core.config.plugins.PluginAttribute
;
...
@@ -29,25 +34,45 @@ import org.apache.logging.log4j.core.config.plugins.PluginElement;
...
@@ -29,25 +34,45 @@ import org.apache.logging.log4j.core.config.plugins.PluginElement;
import
org.apache.logging.log4j.core.config.plugins.PluginFactory
;
import
org.apache.logging.log4j.core.config.plugins.PluginFactory
;
@Plugin
(
name
=
"GRPCLogClientAppender"
,
category
=
"Core"
,
elementType
=
"appender"
)
@Plugin
(
name
=
"GRPCLogClientAppender"
,
category
=
"Core"
,
elementType
=
"appender"
)
public
class
GRPCLogClientAppender
extends
AbstractAppender
{
public
class
GRPCLogClientAppender
extends
AbstractOutputStreamAppender
<
OutputStreamManager
>
{
private
static
final
OutputStream
DISCARDED_STREAM
=
new
OutputStream
()
{
@Override
public
void
write
(
final
int
b
)
throws
IOException
{
// discarded
}
};
private
GRPCLogClientAppender
(
final
String
name
,
final
Filter
filter
,
final
boolean
ignoreExceptions
)
{
protected
GRPCLogClientAppender
(
final
String
name
,
super
(
name
,
filter
,
null
,
ignoreExceptions
);
final
Layout
<?
extends
Serializable
>
layout
,
final
Filter
filter
,
final
boolean
ignoreExceptions
)
{
super
(
name
,
layout
,
filter
,
ignoreExceptions
,
true
,
getManager0
(
layout
)
);
}
}
@Override
@Override
public
void
append
(
LogEvent
logEvent
)
{
public
void
append
(
final
LogEvent
event
)
{
}
}
@PluginFactory
@PluginFactory
public
static
GRPCLogClientAppender
createAppender
(
@PluginAttribute
(
"name"
)
final
String
name
,
public
static
GRPCLogClientAppender
createAppender
(
@PluginAttribute
(
"name"
)
final
String
name
,
@PluginElement
(
"Layout"
)
final
Layout
<?
extends
Serializable
>
layout
,
@PluginElement
(
"Filter"
)
final
Filter
filter
,
@PluginElement
(
"Filter"
)
final
Filter
filter
,
@PluginConfiguration
final
Configuration
config
,
@PluginConfiguration
final
Configuration
config
,
@PluginAttribute
(
"ignoreExceptions"
)
final
String
ignore
)
{
@PluginAttribute
(
"ignoreExceptions"
)
final
String
ignore
)
{
String
appenderName
=
name
==
null
?
"gRPCLogClientAppender"
:
name
;
String
appenderName
=
name
==
null
?
"gRPCLogClientAppender"
:
name
;
final
boolean
ignoreExceptions
=
"true"
.
equalsIgnoreCase
(
ignore
)
||
!
"false"
.
equalsIgnoreCase
(
ignore
);
final
boolean
ignoreExceptions
=
"true"
.
equalsIgnoreCase
(
ignore
)
||
!
"false"
.
equalsIgnoreCase
(
ignore
);
return
new
GRPCLogClientAppender
(
appenderName
,
filter
,
ignoreExceptions
);
return
new
GRPCLogClientAppender
(
appenderName
,
layout
,
filter
,
ignoreExceptions
);
}
private
static
OutputStreamManager
getManager0
(
final
Layout
<?
extends
Serializable
>
layout
)
{
return
OutputStreamManager
.
getManager
(
"Discard"
,
new
Object
(),
(
s
,
o
)
->
new
OutputStreamManager
(
DISCARDED_STREAM
,
"Discard"
,
layout
,
false
)
{
});
}
}
}
}
apm-application-toolkit/apm-toolkit-logback-1.x/src/main/java/org/apache/skywalking/apm/toolkit/log/logback/v1/x/log/GRPCLogClientAppender.java
浏览文件 @
9de93119
...
@@ -18,12 +18,21 @@
...
@@ -18,12 +18,21 @@
package
org.apache.skywalking.apm.toolkit.log.logback.v1.x.log
;
package
org.apache.skywalking.apm.toolkit.log.logback.v1.x.log
;
import
ch.qos.logback.core.AppenderBase
;
import
ch.qos.logback.core.OutputStreamAppender
;
import
java.io.IOException
;
import
java.io.OutputStream
;
public
class
GRPCLogClientAppender
<
E
>
extends
AppenderBase
<
E
>
{
public
class
GRPCLogClientAppender
<
E
>
extends
OutputStreamAppender
<
E
>
{
public
GRPCLogClientAppender
()
{
setOutputStream
(
new
OutputStream
()
{
@Override
public
void
write
(
final
int
b
)
throws
IOException
{
// discarded
}
});
}
@Override
@Override
protected
void
append
(
E
eventObjec
t
)
{
protected
void
subAppend
(
final
E
even
t
)
{
}
}
}
}
apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/src/main/java/org/apache/skywalking/apm/toolkit/activation/log/log4j/v1/x/log/GRPCLogAppenderInterceptor.java
浏览文件 @
9de93119
...
@@ -20,7 +20,8 @@ package org.apache.skywalking.apm.toolkit.activation.log.log4j.v1.x.log;
...
@@ -20,7 +20,8 @@ package org.apache.skywalking.apm.toolkit.activation.log.log4j.v1.x.log;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
java.util.Objects
;
import
java.util.Objects
;
import
org.apache.log4j.AppenderSkeleton
;
import
org.apache.log4j.spi.LoggingEvent
;
import
org.apache.skywalking.apm.agent.core.boot.ServiceManager
;
import
org.apache.skywalking.apm.agent.core.boot.ServiceManager
;
import
org.apache.skywalking.apm.agent.core.conf.Config
;
import
org.apache.skywalking.apm.agent.core.conf.Config
;
import
org.apache.skywalking.apm.agent.core.context.ContextManager
;
import
org.apache.skywalking.apm.agent.core.context.ContextManager
;
...
@@ -35,7 +36,6 @@ import org.apache.skywalking.apm.network.logging.v3.LogDataBody;
...
@@ -35,7 +36,6 @@ import org.apache.skywalking.apm.network.logging.v3.LogDataBody;
import
org.apache.skywalking.apm.network.logging.v3.LogTags
;
import
org.apache.skywalking.apm.network.logging.v3.LogTags
;
import
org.apache.skywalking.apm.network.logging.v3.TextLog
;
import
org.apache.skywalking.apm.network.logging.v3.TextLog
;
import
org.apache.skywalking.apm.network.logging.v3.TraceContext
;
import
org.apache.skywalking.apm.network.logging.v3.TraceContext
;
import
org.apache.log4j.spi.LoggingEvent
;
public
class
GRPCLogAppenderInterceptor
implements
InstanceMethodsAroundInterceptor
{
public
class
GRPCLogAppenderInterceptor
implements
InstanceMethodsAroundInterceptor
{
...
@@ -52,7 +52,7 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
...
@@ -52,7 +52,7 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
}
}
LoggingEvent
event
=
(
LoggingEvent
)
allArguments
[
0
];
LoggingEvent
event
=
(
LoggingEvent
)
allArguments
[
0
];
if
(
Objects
.
nonNull
(
event
))
{
if
(
Objects
.
nonNull
(
event
))
{
client
.
produce
(
transform
(
event
));
client
.
produce
(
transform
(
(
AppenderSkeleton
)
objInst
,
event
));
}
}
}
}
...
@@ -71,10 +71,12 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
...
@@ -71,10 +71,12 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
/**
/**
* transforms {@link LoggingEvent} to {@link LogData}
* transforms {@link LoggingEvent} to {@link LogData}
*
*
*
* @param appender the real {@link AppenderSkeleton appender}
* @param event {@link LoggingEvent}
* @param event {@link LoggingEvent}
* @return {@link LogData} with filtered trace context in order to reduce the cost on the network
* @return {@link LogData} with filtered trace context in order to reduce the cost on the network
*/
*/
private
LogData
transform
(
LoggingEvent
event
)
{
private
LogData
transform
(
final
AppenderSkeleton
appender
,
LoggingEvent
event
)
{
LogData
.
Builder
builder
=
LogData
.
newBuilder
()
LogData
.
Builder
builder
=
LogData
.
newBuilder
()
.
setTimestamp
(
event
.
getTimeStamp
())
.
setTimestamp
(
event
.
getTimeStamp
())
.
setService
(
Config
.
Agent
.
SERVICE_NAME
)
.
setService
(
Config
.
Agent
.
SERVICE_NAME
)
...
@@ -93,7 +95,7 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
...
@@ -93,7 +95,7 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
.
setKey
(
"thread"
).
setValue
(
event
.
getThreadName
()).
build
())
.
setKey
(
"thread"
).
setValue
(
event
.
getThreadName
()).
build
())
.
build
())
.
build
())
.
setBody
(
LogDataBody
.
newBuilder
().
setType
(
LogDataBody
.
ContentCase
.
TEXT
.
name
())
.
setBody
(
LogDataBody
.
newBuilder
().
setType
(
LogDataBody
.
ContentCase
.
TEXT
.
name
())
.
setText
(
TextLog
.
newBuilder
().
setText
(
transformLogText
(
event
)).
build
()).
build
());
.
setText
(
TextLog
.
newBuilder
().
setText
(
transformLogText
(
appender
,
event
)).
build
()).
build
());
return
-
1
==
ContextManager
.
getSpanId
()
?
builder
.
build
()
return
-
1
==
ContextManager
.
getSpanId
()
?
builder
.
build
()
:
builder
.
setTraceContext
(
TraceContext
.
newBuilder
()
:
builder
.
setTraceContext
(
TraceContext
.
newBuilder
()
.
setTraceId
(
ContextManager
.
getGlobalTraceId
())
.
setTraceId
(
ContextManager
.
getGlobalTraceId
())
...
@@ -102,8 +104,11 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
...
@@ -102,8 +104,11 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
.
build
()).
build
();
.
build
()).
build
();
}
}
private
String
transformLogText
(
final
LoggingEvent
event
)
{
private
String
transformLogText
(
final
AppenderSkeleton
appender
,
final
LoggingEvent
event
)
{
final
String
throwableString
=
Objects
.
isNull
(
event
.
getThrowableInformation
())
?
""
:
if
(
appender
.
getLayout
()
!=
null
)
{
return
appender
.
getLayout
().
format
(
event
);
}
final
String
throwableString
=
Objects
.
isNull
(
event
.
getThrowableInformation
())
?
""
:
ThrowableTransformer
.
INSTANCE
.
convert2String
(
event
.
getThrowableInformation
().
getThrowable
(),
2048
);
ThrowableTransformer
.
INSTANCE
.
convert2String
(
event
.
getThrowableInformation
().
getThrowable
(),
2048
);
return
event
.
getMessage
()
+
"\n"
+
throwableString
;
return
event
.
getMessage
()
+
"\n"
+
throwableString
;
}
}
...
...
apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/src/main/java/org/apache/skywalking/apm/toolkit/activation/log/log4j/v2/x/log/GRPCLogAppenderInterceptor.java
浏览文件 @
9de93119
...
@@ -21,8 +21,8 @@ package org.apache.skywalking.apm.toolkit.activation.log.log4j.v2.x.log;
...
@@ -21,8 +21,8 @@ package org.apache.skywalking.apm.toolkit.activation.log.log4j.v2.x.log;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
java.util.Objects
;
import
java.util.Objects
;
import
java.util.Optional
;
import
java.util.Optional
;
import
org.apache.logging.log4j.core.LogEvent
;
import
org.apache.logging.log4j.core.LogEvent
;
import
org.apache.logging.log4j.core.appender.AbstractAppender
;
import
org.apache.skywalking.apm.agent.core.boot.ServiceManager
;
import
org.apache.skywalking.apm.agent.core.boot.ServiceManager
;
import
org.apache.skywalking.apm.agent.core.conf.Config
;
import
org.apache.skywalking.apm.agent.core.conf.Config
;
import
org.apache.skywalking.apm.agent.core.context.ContextManager
;
import
org.apache.skywalking.apm.agent.core.context.ContextManager
;
...
@@ -54,7 +54,7 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
...
@@ -54,7 +54,7 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
}
}
LogEvent
event
=
(
LogEvent
)
allArguments
[
0
];
LogEvent
event
=
(
LogEvent
)
allArguments
[
0
];
if
(
Objects
.
nonNull
(
event
))
{
if
(
Objects
.
nonNull
(
event
))
{
client
.
produce
(
transform
(
event
));
client
.
produce
(
transform
(
(
AbstractAppender
)
objInst
,
event
));
}
}
}
}
...
@@ -73,10 +73,12 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
...
@@ -73,10 +73,12 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
/**
/**
* transforms {@link LogEvent} to {@link LogData}
* transforms {@link LogEvent} to {@link LogData}
*
*
*
* @param appender the real {@link AbstractAppender appender}
* @param event {@link LogEvent}
* @param event {@link LogEvent}
* @return {@link LogData} with filtered trace context in order to reduce the cost on the network
* @return {@link LogData} with filtered trace context in order to reduce the cost on the network
*/
*/
private
LogData
transform
(
LogEvent
event
)
{
private
LogData
transform
(
final
AbstractAppender
appender
,
LogEvent
event
)
{
LogTags
.
Builder
logTags
=
LogTags
.
newBuilder
()
LogTags
.
Builder
logTags
=
LogTags
.
newBuilder
()
.
addData
(
KeyStringValuePair
.
newBuilder
()
.
addData
(
KeyStringValuePair
.
newBuilder
()
.
setKey
(
"level"
).
setValue
(
event
.
getLevel
().
toString
()).
build
())
.
setKey
(
"level"
).
setValue
(
event
.
getLevel
().
toString
()).
build
())
...
@@ -105,7 +107,7 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
...
@@ -105,7 +107,7 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
.
setServiceInstance
(
Config
.
Agent
.
INSTANCE_NAME
)
.
setServiceInstance
(
Config
.
Agent
.
INSTANCE_NAME
)
.
setTags
(
logTags
.
build
())
.
setTags
(
logTags
.
build
())
.
setBody
(
LogDataBody
.
newBuilder
().
setType
(
LogDataBody
.
ContentCase
.
TEXT
.
name
())
.
setBody
(
LogDataBody
.
newBuilder
().
setType
(
LogDataBody
.
ContentCase
.
TEXT
.
name
())
.
setText
(
TextLog
.
newBuilder
().
setText
(
transformLogText
(
event
)).
build
()).
build
());
.
setText
(
TextLog
.
newBuilder
().
setText
(
transformLogText
(
appender
,
event
)).
build
()).
build
());
return
-
1
==
ContextManager
.
getSpanId
()
?
builder
.
build
()
return
-
1
==
ContextManager
.
getSpanId
()
?
builder
.
build
()
:
builder
.
setTraceContext
(
TraceContext
.
newBuilder
()
:
builder
.
setTraceContext
(
TraceContext
.
newBuilder
()
.
setTraceId
(
ContextManager
.
getGlobalTraceId
())
.
setTraceId
(
ContextManager
.
getGlobalTraceId
())
...
@@ -114,8 +116,11 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
...
@@ -114,8 +116,11 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
.
build
()).
build
();
.
build
()).
build
();
}
}
private
String
transformLogText
(
final
LogEvent
event
)
{
private
String
transformLogText
(
final
AbstractAppender
appender
,
final
LogEvent
event
)
{
if
(
ToolkitConfig
.
Plugin
.
Toolkit
.
Log
.
TRANSMIT_FORMATTED
)
{
if
(
ToolkitConfig
.
Plugin
.
Toolkit
.
Log
.
TRANSMIT_FORMATTED
)
{
if
(
appender
.
getLayout
()
!=
null
)
{
return
new
String
(
appender
.
getLayout
().
toByteArray
(
event
));
}
return
event
.
getMessage
().
getFormattedMessage
()
+
"\n"
+
ThrowableTransformer
.
INSTANCE
.
convert2String
(
event
.
getThrown
(),
2048
);
return
event
.
getMessage
().
getFormattedMessage
()
+
"\n"
+
ThrowableTransformer
.
INSTANCE
.
convert2String
(
event
.
getThrown
(),
2048
);
}
else
{
}
else
{
return
event
.
getMessage
().
getFormat
();
return
event
.
getMessage
().
getFormat
();
...
...
apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/src/main/java/org/apache/skywalking/apm/toolkit/activation/log/logback/v1/x/log/GRPCLogAppenderActivation.java
浏览文件 @
9de93119
...
@@ -39,7 +39,7 @@ public class GRPCLogAppenderActivation extends ClassInstanceMethodsEnhancePlugin
...
@@ -39,7 +39,7 @@ public class GRPCLogAppenderActivation extends ClassInstanceMethodsEnhancePlugin
"org.apache.skywalking.apm.toolkit.activation.log.logback.v1.x.log.GRPCLogAppenderInterceptor"
;
"org.apache.skywalking.apm.toolkit.activation.log.logback.v1.x.log.GRPCLogAppenderInterceptor"
;
public
static
final
String
ENHANCE_CLASS
=
public
static
final
String
ENHANCE_CLASS
=
"org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender"
;
"org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender"
;
public
static
final
String
ENHANCE_METHOD
=
"
a
ppend"
;
public
static
final
String
ENHANCE_METHOD
=
"
subA
ppend"
;
@Override
@Override
protected
ClassMatch
enhanceClass
()
{
protected
ClassMatch
enhanceClass
()
{
...
...
apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/src/main/java/org/apache/skywalking/apm/toolkit/activation/log/logback/v1/x/log/GRPCLogAppenderInterceptor.java
浏览文件 @
9de93119
...
@@ -18,12 +18,13 @@
...
@@ -18,12 +18,13 @@
package
org.apache.skywalking.apm.toolkit.activation.log.logback.v1.x.log
;
package
org.apache.skywalking.apm.toolkit.activation.log.logback.v1.x.log
;
import
ch.qos.logback.classic.spi.ILoggingEvent
;
import
ch.qos.logback.classic.spi.IThrowableProxy
;
import
ch.qos.logback.classic.spi.IThrowableProxy
;
import
ch.qos.logback.classic.spi.ThrowableProxy
;
import
ch.qos.logback.classic.spi.ThrowableProxy
;
import
ch.qos.logback.core.OutputStreamAppender
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
java.util.Objects
;
import
java.util.Objects
;
import
java.util.Optional
;
import
java.util.Optional
;
import
org.apache.skywalking.apm.agent.core.boot.ServiceManager
;
import
org.apache.skywalking.apm.agent.core.boot.ServiceManager
;
import
org.apache.skywalking.apm.agent.core.conf.Config
;
import
org.apache.skywalking.apm.agent.core.conf.Config
;
import
org.apache.skywalking.apm.agent.core.context.ContextManager
;
import
org.apache.skywalking.apm.agent.core.context.ContextManager
;
...
@@ -38,14 +39,13 @@ import org.apache.skywalking.apm.network.logging.v3.LogDataBody;
...
@@ -38,14 +39,13 @@ import org.apache.skywalking.apm.network.logging.v3.LogDataBody;
import
org.apache.skywalking.apm.network.logging.v3.LogTags
;
import
org.apache.skywalking.apm.network.logging.v3.LogTags
;
import
org.apache.skywalking.apm.network.logging.v3.TextLog
;
import
org.apache.skywalking.apm.network.logging.v3.TextLog
;
import
org.apache.skywalking.apm.network.logging.v3.TraceContext
;
import
org.apache.skywalking.apm.network.logging.v3.TraceContext
;
import
ch.qos.logback.classic.spi.ILoggingEvent
;
import
org.apache.skywalking.apm.toolkit.logging.common.log.ToolkitConfig
;
import
org.apache.skywalking.apm.toolkit.logging.common.log.ToolkitConfig
;
public
class
GRPCLogAppenderInterceptor
implements
InstanceMethodsAroundInterceptor
{
public
class
GRPCLogAppenderInterceptor
implements
InstanceMethodsAroundInterceptor
{
private
LogReportServiceClient
client
;
private
LogReportServiceClient
client
;
@SuppressWarnings
(
"unchecked"
)
@Override
@Override
public
void
beforeMethod
(
EnhancedInstance
objInst
,
Method
method
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
public
void
beforeMethod
(
EnhancedInstance
objInst
,
Method
method
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
MethodInterceptResult
result
)
throws
Throwable
{
MethodInterceptResult
result
)
throws
Throwable
{
...
@@ -57,7 +57,7 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
...
@@ -57,7 +57,7 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
}
}
ILoggingEvent
event
=
(
ILoggingEvent
)
allArguments
[
0
];
ILoggingEvent
event
=
(
ILoggingEvent
)
allArguments
[
0
];
if
(
Objects
.
nonNull
(
event
))
{
if
(
Objects
.
nonNull
(
event
))
{
client
.
produce
(
transform
(
event
));
client
.
produce
(
transform
(
(
OutputStreamAppender
<
ILoggingEvent
>)
objInst
,
event
));
}
}
}
}
...
@@ -76,10 +76,11 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
...
@@ -76,10 +76,11 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
/**
/**
* transforms {@link ILoggingEvent} to {@link LogData}
* transforms {@link ILoggingEvent} to {@link LogData}
*
*
* @param appender the real {@link OutputStreamAppender appender}
* @param event {@link ILoggingEvent}
* @param event {@link ILoggingEvent}
* @return {@link LogData} with filtered trace context in order to reduce the cost on the network
* @return {@link LogData} with filtered trace context in order to reduce the cost on the network
*/
*/
private
LogData
transform
(
ILoggingEvent
event
)
{
private
LogData
transform
(
final
OutputStreamAppender
<
ILoggingEvent
>
appender
,
ILoggingEvent
event
)
{
LogTags
.
Builder
logTags
=
LogTags
.
newBuilder
()
LogTags
.
Builder
logTags
=
LogTags
.
newBuilder
()
.
addData
(
KeyStringValuePair
.
newBuilder
()
.
addData
(
KeyStringValuePair
.
newBuilder
()
.
setKey
(
"level"
).
setValue
(
event
.
getLevel
().
toString
()).
build
())
.
setKey
(
"level"
).
setValue
(
event
.
getLevel
().
toString
()).
build
())
...
@@ -110,7 +111,7 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
...
@@ -110,7 +111,7 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
.
setServiceInstance
(
Config
.
Agent
.
INSTANCE_NAME
)
.
setServiceInstance
(
Config
.
Agent
.
INSTANCE_NAME
)
.
setTags
(
logTags
.
build
())
.
setTags
(
logTags
.
build
())
.
setBody
(
LogDataBody
.
newBuilder
().
setType
(
LogDataBody
.
ContentCase
.
TEXT
.
name
())
.
setBody
(
LogDataBody
.
newBuilder
().
setType
(
LogDataBody
.
ContentCase
.
TEXT
.
name
())
.
setText
(
TextLog
.
newBuilder
().
setText
(
transformLogText
(
event
)).
build
()).
build
());
.
setText
(
TextLog
.
newBuilder
().
setText
(
transformLogText
(
appender
,
event
)).
build
()).
build
());
return
-
1
==
ContextManager
.
getSpanId
()
?
builder
.
build
()
return
-
1
==
ContextManager
.
getSpanId
()
?
builder
.
build
()
:
builder
.
setTraceContext
(
TraceContext
.
newBuilder
()
:
builder
.
setTraceContext
(
TraceContext
.
newBuilder
()
.
setTraceId
(
ContextManager
.
getGlobalTraceId
())
.
setTraceId
(
ContextManager
.
getGlobalTraceId
())
...
@@ -119,18 +120,9 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
...
@@ -119,18 +120,9 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
.
build
()).
build
();
.
build
()).
build
();
}
}
private
String
transformLogText
(
final
ILoggingEvent
event
)
{
private
String
transformLogText
(
final
OutputStreamAppender
<
ILoggingEvent
>
appender
,
final
ILoggingEvent
event
)
{
final
IThrowableProxy
throwableProxy
=
event
.
getThrowableProxy
();
if
(!(
throwableProxy
instanceof
ThrowableProxy
))
{
if
(
ToolkitConfig
.
Plugin
.
Toolkit
.
Log
.
TRANSMIT_FORMATTED
)
{
return
event
.
getFormattedMessage
();
}
else
{
return
event
.
getMessage
();
}
}
if
(
ToolkitConfig
.
Plugin
.
Toolkit
.
Log
.
TRANSMIT_FORMATTED
)
{
if
(
ToolkitConfig
.
Plugin
.
Toolkit
.
Log
.
TRANSMIT_FORMATTED
)
{
final
Throwable
throwable
=
((
ThrowableProxy
)
throwableProxy
).
getThrowable
();
return
new
String
(
appender
.
getEncoder
().
encode
(
event
));
return
event
.
getFormattedMessage
()
+
"\n"
+
ThrowableTransformer
.
INSTANCE
.
convert2String
(
throwable
,
2048
);
}
else
{
}
else
{
return
event
.
getMessage
();
return
event
.
getMessage
();
}
}
...
...
test/e2e/e2e-service-provider/pom.xml
浏览文件 @
9de93119
...
@@ -34,7 +34,6 @@
...
@@ -34,7 +34,6 @@
<artifactId>
e2e-service-provider
</artifactId>
<artifactId>
e2e-service-provider
</artifactId>
<properties>
<properties>
<sw.version>
8.4.0
</sw.version>
<log4j.version>
1.2.17
</log4j.version>
<log4j.version>
1.2.17
</log4j.version>
<log4j2.version>
2.7
</log4j2.version>
<log4j2.version>
2.7
</log4j2.version>
<logback.version>
1.2.3
</logback.version>
<logback.version>
1.2.3
</logback.version>
...
...
test/e2e/e2e-service-provider/src/main/resources/log4j.properties
浏览文件 @
9de93119
...
@@ -13,4 +13,6 @@
...
@@ -13,4 +13,6 @@
# See the License for the specific language governing permissions and
# See the License for the specific language governing permissions and
# limitations under the License.
# limitations under the License.
log4j.rootLogger
=
info,CustomAppender
log4j.rootLogger
=
info,CustomAppender
log4j.appender.CustomAppender
=
org.apache.skywalking.apm.toolkit.log.log4j.v1.x.log.GRPCLogClientAppender
log4j.appender.CustomAppender
=
org.apache.skywalking.apm.toolkit.log.log4j.v1.x.log.GRPCLogClientAppender
\ No newline at end of file
log4j.appender.CustomAppender.layout
=
org.apache.log4j.PatternLayout
log4j.appender.CustomAppender.layout.ConversionPattern
=
[%t] %-5p %c %x - %m%n
test/e2e/e2e-service-provider/src/main/resources/log4j2.xml
浏览文件 @
9de93119
...
@@ -20,7 +20,9 @@
...
@@ -20,7 +20,9 @@
<Console
name=
"Console"
target=
"SYSTEM_OUT"
>
<Console
name=
"Console"
target=
"SYSTEM_OUT"
>
<PatternLayout
pattern=
"%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
/>
<PatternLayout
pattern=
"%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
/>
</Console>
</Console>
<GRPCLogClientAppender
name=
"grpc-log"
/>
<GRPCLogClientAppender
name=
"grpc-log"
>
<PatternLayout
pattern=
"%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
/>
</GRPCLogClientAppender>
</Appenders>
</Appenders>
...
@@ -31,4 +33,4 @@
...
@@ -31,4 +33,4 @@
<AppenderRef
ref=
"grpc-log"
/>
<AppenderRef
ref=
"grpc-log"
/>
</Root>
</Root>
</Loggers>
</Loggers>
</Configuration>
</Configuration>
\ No newline at end of file
test/e2e/e2e-service-provider/src/main/resources/logback.xml
浏览文件 @
9de93119
...
@@ -25,10 +25,16 @@
...
@@ -25,10 +25,16 @@
</encoder>
</encoder>
</appender>
</appender>
<appender
name=
"grpc-log"
class=
"org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender"
/>
<appender
name=
"grpc-log"
class=
"org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender"
>
<encoder
class=
"ch.qos.logback.core.encoder.LayoutWrappingEncoder"
>
<layout
class=
"org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout"
>
<Pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n
</Pattern>
</layout>
</encoder>
</appender>
<root
level=
"INFO"
>
<root
level=
"INFO"
>
<appender-ref
ref=
"grpc-log"
/>
<appender-ref
ref=
"grpc-log"
/>
<appender-ref
ref=
"stdout"
/>
<appender-ref
ref=
"stdout"
/>
</root>
</root>
</configuration>
</configuration>
\ No newline at end of file
test/e2e/pom.xml
浏览文件 @
9de93119
...
@@ -44,6 +44,14 @@
...
@@ -44,6 +44,14 @@
</modules>
</modules>
<properties>
<properties>
<sw.version>
<!--
Please manually set the SkyWalking version here to build in the IDE
(if you build from command line, just use ./mvnw -Dsw.version=x.y.z),
but make sure not to check it into the code base / git
-->
</sw.version>
<java.version>
1.8
</java.version>
<java.version>
1.8
</java.version>
<maven.compiler.source>
${java.version}
</maven.compiler.source>
<maven.compiler.source>
${java.version}
</maven.compiler.source>
<maven.compiler.target>
${java.version}
</maven.compiler.target>
<maven.compiler.target>
${java.version}
</maven.compiler.target>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录