Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
4b8edf98
C
cat
项目概览
梦中观雨
/
cat
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
cat
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
4b8edf98
编写于
10月 29, 2013
作者:
Y
yong.you
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add cat trace type
上级
cdb0015d
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
142 addition
and
14 deletion
+142
-14
README.md
README.md
+5
-5
cat-client/src/main/java/com/dianping/cat/Cat.java
cat-client/src/main/java/com/dianping/cat/Cat.java
+5
-0
cat-client/src/main/java/com/dianping/cat/message/MessageProducer.java
...c/main/java/com/dianping/cat/message/MessageProducer.java
+26
-2
cat-client/src/main/java/com/dianping/cat/message/Trace.java
cat-client/src/main/java/com/dianping/cat/message/Trace.java
+18
-0
cat-client/src/main/java/com/dianping/cat/message/internal/DefaultMessageProducer.java
...dianping/cat/message/internal/DefaultMessageProducer.java
+29
-0
cat-client/src/main/java/com/dianping/cat/message/internal/DefaultTrace.java
.../java/com/dianping/cat/message/internal/DefaultTrace.java
+27
-0
cat-client/src/main/java/com/dianping/cat/message/internal/NullMessage.java
...n/java/com/dianping/cat/message/internal/NullMessage.java
+5
-2
cat-client/src/main/java/com/dianping/cat/message/spi/codec/PlainTextMessageCodec.java
...dianping/cat/message/spi/codec/PlainTextMessageCodec.java
+20
-0
cat-core/src/main/java/com/dianping/cat/message/spi/core/HtmlMessageCodec.java
...a/com/dianping/cat/message/spi/core/HtmlMessageCodec.java
+7
-5
未找到文件。
README.md
浏览文件 @
4b8edf98
CAT
[![Build Status](https://travis-ci.org/dianping/cat.png?branch=biz)](https://travis-ci.org/dianping/cat)
CAT
===
Central Application Tracking
<hr>
Central Application Tracking
[
![Build Status
](
https://travis-ci.org/dianping/cat.png?branch=biz
)
](https://travis-ci.org/dianping/cat)
#####1、安装Mysql服务器
#####2、配置Hadoop集群服务器【可选】
...
...
@@ -10,10 +10,10 @@ Central Application Tracking
#####5、在本地磁盘中创建两个目录/data/appdatas/cat,以及/data/applogs/cat
mkdir -p /data/appdatas/cat
mkdir -p /data/applogs/cat
#####6、确保运行程序对
上面
两个目录拥有读写权限,比如用cat用户启动程序
#####6、确保运行程序对
刚刚创建的
两个目录拥有读写权限,比如用cat用户启动程序
chown cat:cat /data/appdatas/cat -R
chown cat:cat /data/applogs/cat -R
#####7、确保系统的临时目录程序拥有读写权限
#####7、确保系统的临时目录程序拥有读写权限
,Linux为/tmp/目录
#####8、拷贝script文件夹下的'client.xml datasources.xml server.xml'到/data/appdatas/cat目录下
cp script/
*
.xml /data/appdatas/cat
#####9、修改/data/appdatas/cat/datasource.xml中cat数据源的基本信息,使用您自己的数据库链接信息
...
...
cat-client/src/main/java/com/dianping/cat/Cat.java
浏览文件 @
4b8edf98
...
...
@@ -21,6 +21,7 @@ import com.dianping.cat.message.Event;
import
com.dianping.cat.message.Heartbeat
;
import
com.dianping.cat.message.Message
;
import
com.dianping.cat.message.MessageProducer
;
import
com.dianping.cat.message.Trace
;
import
com.dianping.cat.message.Transaction
;
import
com.dianping.cat.message.spi.MessageManager
;
...
...
@@ -257,6 +258,10 @@ public class Cat {
return
Cat
.
getProducer
().
newEvent
(
type
,
name
);
}
public
static
Trace
newTrace
(
String
type
,
String
name
)
{
return
Cat
.
getProducer
().
newTrace
(
type
,
name
);
}
public
static
Heartbeat
newHeartbeat
(
String
type
,
String
name
)
{
return
Cat
.
getProducer
().
newHeartbeat
(
type
,
name
);
}
...
...
cat-client/src/main/java/com/dianping/cat/message/MessageProducer.java
浏览文件 @
4b8edf98
...
...
@@ -169,7 +169,21 @@ public interface MessageProducer {
* @param nameValuePairs
* name value pairs in the format of "a=1&b=2&..."
*/
public
void
logEvent
(
String
type
,
String
name
,
String
status
,
String
nameValuePairs
);
public
void
logEvent
(
String
type
,
String
name
,
String
status
,
String
nameValuePairs
);
/**
* Log an trace in one shot.
*
* @param type
* trace type
* @param name
* trace name
* @param status
* "0" means success, otherwise means error code
* @param nameValuePairs
* name value pairs in the format of "a=1&b=2&..."
*/
public
void
logTrace
(
String
type
,
String
name
,
String
status
,
String
nameValuePairs
);
/**
* Log a heartbeat in one shot.
...
...
@@ -205,7 +219,17 @@ public interface MessageProducer {
* @param name
* event name
*/
public
Event
newEvent
(
String
type
,
String
name
);
public
Event
newEvent
(
String
type
,
String
name
);
/**
* Create a new trace with given type and name.
*
* @param type
* trace type
* @param name
* trace name
*/
public
Trace
newTrace
(
String
type
,
String
name
);
/**
* Create a new heartbeat with given type and name.
...
...
cat-client/src/main/java/com/dianping/cat/message/Trace.java
0 → 100644
浏览文件 @
4b8edf98
package
com.dianping.cat.message
;
/**
* <p>
* <code>Trace</code> is used to log anything for trace message info happens at a specific time. Such as an debug or info message.
* </p>
*
* <p>
* All CAT message will be constructed as a message tree and send to back-end for further analysis, and for monitoring.
* Only <code>Transaction</code> can be a tree node, all other message will be the tree leaf. The transaction without
* other messages nested is an atomic transaction.
* </p>
*
* @author Frankie Wu
*/
public
interface
Trace
extends
Message
{
}
cat-client/src/main/java/com/dianping/cat/message/internal/DefaultMessageProducer.java
浏览文件 @
4b8edf98
...
...
@@ -10,6 +10,7 @@ import com.dianping.cat.message.Heartbeat;
import
com.dianping.cat.message.Message
;
import
com.dianping.cat.message.MessageProducer
;
import
com.dianping.cat.message.Metric
;
import
com.dianping.cat.message.Trace
;
import
com.dianping.cat.message.Transaction
;
import
com.dianping.cat.message.spi.MessageManager
;
...
...
@@ -77,6 +78,18 @@ public class DefaultMessageProducer implements MessageProducer {
event
.
complete
();
}
@Override
public
void
logTrace
(
String
type
,
String
name
,
String
status
,
String
nameValuePairs
)
{
Trace
trace
=
newTrace
(
type
,
name
);
if
(
nameValuePairs
!=
null
&&
nameValuePairs
.
length
()
>
0
)
{
trace
.
addData
(
nameValuePairs
);
}
trace
.
setStatus
(
status
);
trace
.
complete
();
}
@Override
public
void
logHeartbeat
(
String
type
,
String
name
,
String
status
,
String
nameValuePairs
)
{
Heartbeat
heartbeat
=
newHeartbeat
(
type
,
name
);
...
...
@@ -115,6 +128,22 @@ public class DefaultMessageProducer implements MessageProducer {
}
}
@Override
public
Trace
newTrace
(
String
type
,
String
name
)
{
if
(!
m_manager
.
hasContext
())
{
m_manager
.
setup
();
}
if
(
m_manager
.
isCatEnabled
())
{
DefaultTrace
trace
=
new
DefaultTrace
(
type
,
name
);
m_manager
.
add
(
trace
);
return
trace
;
}
else
{
return
NullMessage
.
TRACE
;
}
}
public
Event
newEvent
(
Transaction
parent
,
String
type
,
String
name
)
{
if
(!
m_manager
.
hasContext
())
{
m_manager
.
setup
();
...
...
cat-client/src/main/java/com/dianping/cat/message/internal/DefaultTrace.java
0 → 100644
浏览文件 @
4b8edf98
package
com.dianping.cat.message.internal
;
import
com.dianping.cat.message.Trace
;
import
com.dianping.cat.message.spi.MessageManager
;
public
class
DefaultTrace
extends
AbstractMessage
implements
Trace
{
private
MessageManager
m_manager
;
public
DefaultTrace
(
String
type
,
String
name
)
{
super
(
type
,
name
);
}
public
DefaultTrace
(
String
type
,
String
name
,
MessageManager
manager
)
{
super
(
type
,
name
);
m_manager
=
manager
;
}
@Override
public
void
complete
()
{
setCompleted
(
true
);
if
(
m_manager
!=
null
&&
m_manager
.
getThreadLocalMessageTree
().
getMessage
()
==
null
)
{
m_manager
.
add
(
this
);
}
}
}
cat-client/src/main/java/com/dianping/cat/message/internal/NullMessage.java
浏览文件 @
4b8edf98
...
...
@@ -7,15 +7,18 @@ import com.dianping.cat.message.Event;
import
com.dianping.cat.message.Heartbeat
;
import
com.dianping.cat.message.Message
;
import
com.dianping.cat.message.Metric
;
import
com.dianping.cat.message.Trace
;
import
com.dianping.cat.message.Transaction
;
public
enum
NullMessage
implements
Transaction
,
Event
,
Metric
,
Heartbeat
{
public
enum
NullMessage
implements
Transaction
,
Event
,
Metric
,
Trace
,
Heartbeat
{
TRANSACTION
,
EVENT
,
METRIC
,
TRACE
,
HEARTBEAT
;
@Override
...
...
cat-client/src/main/java/com/dianping/cat/message/spi/codec/PlainTextMessageCodec.java
浏览文件 @
4b8edf98
...
...
@@ -22,10 +22,12 @@ import com.dianping.cat.message.Event;
import
com.dianping.cat.message.Heartbeat
;
import
com.dianping.cat.message.Message
;
import
com.dianping.cat.message.Metric
;
import
com.dianping.cat.message.Trace
;
import
com.dianping.cat.message.Transaction
;
import
com.dianping.cat.message.internal.DefaultEvent
;
import
com.dianping.cat.message.internal.DefaultHeartbeat
;
import
com.dianping.cat.message.internal.DefaultMetric
;
import
com.dianping.cat.message.internal.DefaultTrace
;
import
com.dianping.cat.message.internal.DefaultTransaction
;
import
com.dianping.cat.message.spi.MessageCodec
;
import
com.dianping.cat.message.spi.MessageTree
;
...
...
@@ -165,6 +167,22 @@ public class PlainTextMessageCodec implements MessageCodec, LogEnabled {
}
else
{
return
event
;
}
}
else
if
(
identifier
==
'L'
)
{
DefaultTrace
trace
=
new
DefaultTrace
(
type
,
name
);
String
status
=
helper
.
read
(
buf
,
TAB
);
String
data
=
helper
.
readRaw
(
buf
,
TAB
);
helper
.
read
(
buf
,
LF
);
// get rid of line feed
trace
.
setTimestamp
(
m_dateHelper
.
parse
(
timestamp
));
trace
.
setStatus
(
status
);
trace
.
addData
(
data
);
if
(
parent
!=
null
)
{
parent
.
addChild
(
trace
);
return
parent
;
}
else
{
return
trace
;
}
}
else
if
(
identifier
==
'M'
)
{
DefaultMetric
metric
=
new
DefaultMetric
(
type
,
name
);
String
status
=
helper
.
read
(
buf
,
TAB
);
...
...
@@ -339,6 +357,8 @@ public class PlainTextMessageCodec implements MessageCodec, LogEnabled {
}
}
else
if
(
message
instanceof
Event
)
{
return
encodeLine
(
message
,
buf
,
'E'
,
Policy
.
DEFAULT
);
}
else
if
(
message
instanceof
Trace
)
{
return
encodeLine
(
message
,
buf
,
'L'
,
Policy
.
DEFAULT
);
}
else
if
(
message
instanceof
Metric
)
{
return
encodeLine
(
message
,
buf
,
'M'
,
Policy
.
DEFAULT
);
}
else
if
(
message
instanceof
Heartbeat
)
{
...
...
cat-core/src/main/java/com/dianping/cat/message/spi/core/HtmlMessageCodec.java
浏览文件 @
4b8edf98
...
...
@@ -18,6 +18,7 @@ import com.dianping.cat.message.Event;
import
com.dianping.cat.message.Heartbeat
;
import
com.dianping.cat.message.Message
;
import
com.dianping.cat.message.Metric
;
import
com.dianping.cat.message.Trace
;
import
com.dianping.cat.message.Transaction
;
import
com.dianping.cat.message.spi.MessageCodec
;
import
com.dianping.cat.message.spi.MessageTree
;
...
...
@@ -184,7 +185,7 @@ public class HtmlMessageCodec implements MessageCodec, Initializable {
count
+=
helper
.
tr1
(
buf
,
null
);
}
String
link
=
message
.
getData
().
toString
();
String
link
=
message
.
getData
().
toString
();
count
+=
helper
.
td1
(
buf
);
...
...
@@ -213,14 +214,13 @@ public class HtmlMessageCodec implements MessageCodec, Initializable {
count
+=
helper
.
tr1
(
buf
,
null
);
}
String
link
=
message
.
getData
().
toString
();
String
link
=
message
.
getData
().
toString
();
String
name
=
message
.
getName
();
count
+=
helper
.
td1
(
buf
);
count
+=
helper
.
nbsp
(
buf
,
level
*
2
);
// 2 spaces per level
count
+=
helper
.
write
(
buf
,
String
.
format
(
"<a href=\"%s\" target=\"_blank\">[:: %s ::]</a>"
,
link
,
name
));
count
+=
helper
.
write
(
buf
,
String
.
format
(
"<a href=\"%s\" target=\"_blank\">[:: %s ::]</a>"
,
link
,
name
));
count
+=
helper
.
td2
(
buf
);
count
+=
helper
.
tr2
(
buf
);
count
+=
helper
.
crlf
(
buf
);
...
...
@@ -262,6 +262,8 @@ public class HtmlMessageCodec implements MessageCodec, Initializable {
}
else
{
return
encodeLine
(
tree
,
message
,
buf
,
'E'
,
Policy
.
DEFAULT
,
level
,
counter
);
}
}
else
if
(
message
instanceof
Trace
)
{
return
encodeLine
(
tree
,
message
,
buf
,
'L'
,
Policy
.
DEFAULT
,
level
,
counter
);
}
else
if
(
message
instanceof
Metric
)
{
return
encodeLine
(
tree
,
message
,
buf
,
'M'
,
Policy
.
DEFAULT
,
level
,
counter
);
}
else
if
(
message
instanceof
Heartbeat
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录