A distributed systems tracing and logging infrastructure based on javaagent, trace trees and spans(see Google Dapper), slf4j and log4j2. 基于javaagent、trace trees and spans(参考Google Dapper)、slf4j和log4j2实现的分布式系统全链路调用跟踪及日志框架。
A distributed systems tracing and logging infrastructure based on javaagent, trace trees and spans(see Google Dapper), slf4j and log4j2.
基于javaagent、trace trees and spans(参考Google Dapper)、slf4j和log4j2实现的分布式系统全链路调用跟踪及日志框架。
mvn clean package
demo.bat
logtrace/target/logtrace-*-jar-with-dependencies.jar
logagent/src/main/resources/logtrace.properties
tracespan/src/main/resources/log4j2.xml
配置Weblogic Server启动参数
注:{VERSION}修改为实际版本号
-javaagent:${DOMAIN_HOME}/logtrace/logtrace-{VERSION}-jar-with-dependencies.jar=${DOMAIN_HOME}/logtrace/logtrace.properties -Dlog4j.configurationFile=${DOMAIN_HOME}/logtrace/log4j2.xml -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
JAVA_OPTIONS=" <内容同上> ${SAVE_JAVA_OPTIONS} "
logtrace/target/lib
下所有文件至%CATALINA_BASE%/lib
目录logagent/src/main/resources/logtrace.properties
和tracespan/src/main/resources/log4j2.xml
至%CATALINA_BASE%/conf
目录配置tomcat启动参数,在%CATALINA_BASE%/bin
目录下新建或编辑setenv.bat
文件,添加内容:
注:{VERSION}修改为实际版本号
set CATALINA_OPTS=-javaagent:%CATALINA_BASE%/lib/logagent-{VERSION}.jar=file:/%CATALINA_BASE%/conf/logtrace.properties -Dlog4j.configurationFile=file:/%CATALINA_BASE%/conf/log4j2.xml -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
logtrace/target/logtrace-*-jar-with-dependencies.jar
logagent/src/main/resources/logtrace.properties
tracespan/src/main/resources/log4j2.xml
修改应用服务器启动脚本,在java之后添加启动参数:
注:{FULL PATH}修改为logtrace目录所在绝对路径; {VERSION}修改为实际版本号
-javaagent:{FULL PATH}/logtrace/logtrace-{VERSION}-jar-with-dependencies.jar=file:/{FULL PATH}/logtrace/logtrace.properties -Dlog4j.configurationFile=file:/{FULL PATH}/logtrace/log4j2.xml -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
参数说明
配置webapp的WEB-INF/web.xml增加TraceFilter
<filter>
<display-name>TraceFilter</display-name>
<filter-name>TraceFilter</filter-name>
<filter-class>com.microtracing.tracespan.web.TraceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>TraceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
配置需要跟踪的包、类、方法及启用的特性等
配置说明
参考配置
配置日志输出策略、文件及格式等
配置说明
默认配置输出终端:Console, tracelog, applog. 默认等级WARN及以上输出至Console和applog.
<Logger name="com.mycompany.myapp" level="INFO" additivity="false">
<AppenderRef ref="applog"></AppenderRef>
</Logger>
注:System.out.println内容会自动转换为log以DEBUG等级输出至logapp
参考配置
日志文件
日志输出格式
2017-12-05 16:32:23.019 INFO [68a35c074328b600,ce4fffc041b09a35] com.microtracing.tracespan.Span : SpanEvent{event="cs", spanId=ce4fffc041b09a35, timestamp=1512462743019}
检查classpath和WEB-INF/lib是否有其他slf4j实现库,进行清除。
CLASSPATH中存在重复jar文件或依赖jar文件分散在不同目录,由不同ClassLoader加载且顺序错误导致,清理JRE/lib,server/lib,webapp/WEB-INF/lib等目录下手工放置的jar文件,并参考tomcat部署方法进行重新部署。