Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
a4356bfd
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,发现更多精彩内容 >>
提交
a4356bfd
编写于
3月 04, 2012
作者:
F
Frankie Wu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
extract domain, timestamp out of message id
上级
191a6f61
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
74 addition
and
82 deletion
+74
-82
cat-core/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+1
-1
cat-core/src/main/java/com/dianping/cat/message/internal/MessageIdFactory.java
...a/com/dianping/cat/message/internal/MessageIdFactory.java
+17
-0
cat-core/src/main/java/com/dianping/cat/message/spi/MessageId.java
...src/main/java/com/dianping/cat/message/spi/MessageId.java
+0
-7
cat-core/src/main/java/com/dianping/cat/message/spi/MessagePathBuilder.java
...java/com/dianping/cat/message/spi/MessagePathBuilder.java
+1
-3
cat-core/src/main/java/com/dianping/cat/message/spi/internal/DefaultMessagePathBuilder.java
...g/cat/message/spi/internal/DefaultMessagePathBuilder.java
+30
-29
cat-core/src/main/java/com/dianping/cat/message/spi/internal/DefaultMessageStorage.java
...nping/cat/message/spi/internal/DefaultMessageStorage.java
+3
-3
cat-core/src/main/resources/META-INF/plexus/components.xml
cat-core/src/main/resources/META-INF/plexus/components.xml
+3
-0
cat-core/src/test/java/com/dianping/cat/message/internal/MessageIdFactoryTest.java
...m/dianping/cat/message/internal/MessageIdFactoryTest.java
+16
-10
cat-home/src/main/webapp/jsp/report/transaction_graphs.jsp
cat-home/src/main/webapp/jsp/report/transaction_graphs.jsp
+2
-16
cat-job/src/main/java/com/dianping/cat/job/hdfs/DefaultOutputChannelManager.java
...om/dianping/cat/job/hdfs/DefaultOutputChannelManager.java
+1
-13
未找到文件。
cat-core/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
a4356bfd
...
...
@@ -62,7 +62,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
MessageIdFactory
.
class
)
//
.
req
(
MessageManager
.
class
));
all
.
add
(
C
(
MessagePathBuilder
.
class
,
DefaultMessagePathBuilder
.
class
)
//
.
req
(
MessageManager
.
class
));
.
req
(
MessageManager
.
class
,
MessageIdFactory
.
class
));
all
.
add
(
C
(
MessageStorage
.
class
,
"html"
,
DefaultMessageStorage
.
class
)
//
.
req
(
MessagePathBuilder
.
class
)
//
.
req
(
MessageCodec
.
class
,
"html"
));
...
...
cat-core/src/main/java/com/dianping/cat/message/internal/MessageIdFactory.java
浏览文件 @
a4356bfd
...
...
@@ -2,11 +2,13 @@ package com.dianping.cat.message.internal;
import
java.net.InetAddress
;
import
java.net.UnknownHostException
;
import
java.util.List
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException
;
import
com.dianping.cat.message.spi.MessageManager
;
import
com.site.helper.Splitters
;
import
com.site.lookup.annotation.Inject
;
public
class
MessageIdFactory
implements
Initializable
{
...
...
@@ -46,6 +48,21 @@ public class MessageIdFactory implements Initializable {
return
sb
.
toString
();
}
public
Object
[]
parse
(
String
messageId
)
{
Object
[]
parts
=
new
Object
[
4
];
List
<
String
>
list
=
Splitters
.
by
(
'-'
).
split
(
messageId
);
int
len
=
list
.
size
();
if
(
len
==
4
)
{
parts
[
0
]
=
list
.
get
(
0
);
// domain
parts
[
1
]
=
list
.
get
(
1
);
// ip address in HEX
parts
[
2
]
=
Long
.
parseLong
(
list
.
get
(
2
),
16
);
parts
[
3
]
=
Integer
.
parseInt
(
list
.
get
(
3
),
16
);
}
return
parts
;
}
protected
long
getTimestamp
()
{
return
MilliSecondTimer
.
currentTimeMillis
();
}
...
...
cat-core/src/main/java/com/dianping/cat/message/spi/MessageId.java
已删除
100644 → 0
浏览文件 @
191a6f61
package
com.dianping.cat.message.spi
;
public
interface
MessageId
{
public
String
getDomain
();
public
long
getTimestamp
();
}
cat-core/src/main/java/com/dianping/cat/message/spi/MessagePathBuilder.java
浏览文件 @
a4356bfd
...
...
@@ -4,13 +4,11 @@ import java.io.File;
import
java.net.URL
;
public
interface
MessagePathBuilder
{
public
String
getHdfsPath
(
MessageTree
tree
,
String
host
);
public
String
getHdfsPath
(
String
messageId
);
public
File
getLogViewBaseDir
();
public
URL
getLogViewBaseUrl
();
public
String
getLogViewPath
(
MessageTree
tree
);
public
String
getLogViewPath
(
String
messageId
);
}
cat-core/src/main/java/com/dianping/cat/message/spi/internal/DefaultMessagePathBuilder.java
浏览文件 @
a4356bfd
...
...
@@ -6,7 +6,6 @@ import java.net.MalformedURLException;
import
java.net.URL
;
import
java.text.MessageFormat
;
import
java.util.Date
;
import
java.util.List
;
import
org.codehaus.plexus.logging.LogEnabled
;
import
org.codehaus.plexus.logging.Logger
;
...
...
@@ -14,16 +13,18 @@ import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException
;
import
com.dianping.cat.configuration.model.entity.Config
;
import
com.dianping.cat.message.internal.MessageIdFactory
;
import
com.dianping.cat.message.spi.MessageManager
;
import
com.dianping.cat.message.spi.MessagePathBuilder
;
import
com.dianping.cat.message.spi.MessageTree
;
import
com.site.helper.Splitters
;
import
com.site.lookup.annotation.Inject
;
public
class
DefaultMessagePathBuilder
implements
MessagePathBuilder
,
Initializable
,
LogEnabled
{
@Inject
private
MessageManager
m_manager
;
@Inject
private
MessageIdFactory
m_factory
;
private
File
m_baseLogDir
;
private
URL
m_baseLogUrl
;
...
...
@@ -31,12 +32,23 @@ public class DefaultMessagePathBuilder implements MessagePathBuilder, Initializa
private
Logger
m_logger
;
@Override
public
String
getHdfsPath
(
MessageTree
tree
,
String
host
)
{
public
String
getHdfsPath
(
String
messageId
)
{
MessageFormat
format
=
new
MessageFormat
(
"{0,date,yyyyMMdd}/{0,date,HH}/{1}/{0,date,mm}-{2}"
);
Date
date
=
new
Date
(
tree
.
getMessage
().
getTimestamp
());
String
path
=
format
.
format
(
new
Object
[]
{
date
,
tree
.
getDomain
(),
host
});
Object
[]
parts
=
m_factory
.
parse
(
messageId
);
return
path
;
try
{
String
domain
=
(
String
)
parts
[
0
];
String
ipAddress
=
(
String
)
parts
[
1
];
long
timestamp
=
(
Long
)
parts
[
2
];
Date
date
=
new
Date
(
timestamp
);
String
path
=
format
.
format
(
new
Object
[]
{
date
,
domain
,
ipAddress
});
return
path
;
}
catch
(
Exception
e
)
{
m_logger
.
error
(
"Invalid message id format: "
+
messageId
,
e
);
}
return
messageId
;
}
@Override
...
...
@@ -49,30 +61,19 @@ public class DefaultMessagePathBuilder implements MessagePathBuilder, Initializa
return
m_baseLogUrl
;
}
@Override
public
String
getLogViewPath
(
MessageTree
tree
)
{
MessageFormat
format
=
new
MessageFormat
(
"{0,date,yyyyMMdd}/{0,date,HH}/{1}/{2}.html"
);
Date
date
=
new
Date
(
tree
.
getMessage
().
getTimestamp
());
String
path
=
format
.
format
(
new
Object
[]
{
date
,
tree
.
getDomain
(),
tree
.
getMessageId
()
});
return
path
;
}
@Override
public
String
getLogViewPath
(
String
messageId
)
{
List
<
String
>
parts
=
Splitters
.
by
(
'-'
).
split
(
messageId
);
if
(
parts
.
size
()
==
4
)
{
try
{
String
domain
=
parts
.
get
(
0
);
long
timestamp
=
Long
.
parseLong
(
parts
.
get
(
2
),
16
);
MessageFormat
format
=
new
MessageFormat
(
"{0,date,yyyyMMdd}/{0,date,HH}/{1}/{2}.html"
);
String
path
=
format
.
format
(
new
Object
[]
{
new
Date
(
timestamp
),
domain
,
messageId
});
return
path
;
}
catch
(
Exception
e
)
{
m_logger
.
error
(
"Invalid message id format: "
+
messageId
,
e
);
}
Object
[]
parts
=
m_factory
.
parse
(
messageId
);
try
{
String
domain
=
(
String
)
parts
[
0
];
long
timestamp
=
(
Long
)
parts
[
2
];
MessageFormat
format
=
new
MessageFormat
(
"{0,date,yyyyMMdd}/{0,date,HH}/{1}/{2}.html"
);
String
path
=
format
.
format
(
new
Object
[]
{
new
Date
(
timestamp
),
domain
,
messageId
});
return
path
;
}
catch
(
Exception
e
)
{
m_logger
.
error
(
"Invalid message id format: "
+
messageId
,
e
);
}
return
messageId
;
...
...
cat-core/src/main/java/com/dianping/cat/message/spi/internal/DefaultMessageStorage.java
浏览文件 @
a4356bfd
...
...
@@ -52,14 +52,14 @@ public class DefaultMessageStorage implements MessageStorage, Initializable, Dis
@Override
public
String
getPath
(
MessageTree
tree
)
{
String
path
=
m_builder
.
getLogViewPath
(
tree
);
String
path
=
m_builder
.
getLogViewPath
(
tree
.
getMessageId
()
);
return
path
;
}
@Override
public
String
store
(
MessageTree
tree
)
{
String
path
=
m_builder
.
getLogViewPath
(
tree
);
String
path
=
m_builder
.
getLogViewPath
(
tree
.
getMessageId
()
);
m_job
.
append
(
tree
);
return
path
;
...
...
@@ -79,7 +79,7 @@ public class DefaultMessageStorage implements MessageStorage, Initializable, Dis
}
private
void
handle
(
MessageTree
tree
)
{
String
path
=
m_builder
.
getLogViewPath
(
tree
);
String
path
=
m_builder
.
getLogViewPath
(
tree
.
getMessageId
()
);
File
file
=
new
File
(
m_builder
.
getLogViewBaseDir
(),
path
);
if
(!
file
.
exists
())
{
...
...
cat-core/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
a4356bfd
...
...
@@ -53,6 +53,9 @@
<requirement>
<role>
com.dianping.cat.message.spi.MessageManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.message.internal.MessageIdFactory
</role>
</requirement>
</requirements>
</component>
<component>
...
...
cat-core/src/test/java/com/dianping/cat/message/internal/MessageIdFactoryTest.java
浏览文件 @
a4356bfd
...
...
@@ -14,10 +14,25 @@ public class MessageIdFactoryTest {
}
};
private
void
check
(
String
domain
,
String
expected
)
{
m_factory
.
setDomain
(
domain
);
m_factory
.
setIpAddress
(
"c0a83f99"
);
// 192.168.63.153
String
actual
=
m_factory
.
getNextId
();
Assert
.
assertEquals
(
expected
,
actual
);
Object
[]
parts
=
m_factory
.
parse
(
actual
);
Assert
.
assertEquals
(
domain
,
parts
[
0
]);
Assert
.
assertEquals
(
"c0a83f99"
,
parts
[
1
]);
Assert
.
assertEquals
(
m_timestamp
,
parts
[
2
]);
}
@Test
public
void
test
()
throws
Exception
{
m_factory
.
initialize
();
check
(
"domain1"
,
"domain1-c0a83f99-135bdb7825c-0"
);
check
(
"domain1"
,
"domain1-c0a83f99-135bdb7825c-1"
);
check
(
"domain1"
,
"domain1-c0a83f99-135bdb7825c-2"
);
...
...
@@ -33,13 +48,4 @@ public class MessageIdFactoryTest {
check
(
"domain1"
,
"domain1-c0a83f99-135bdb7825e-1"
);
check
(
"domain1"
,
"domain1-c0a83f99-135bdb7825e-2"
);
}
private
void
check
(
String
domain
,
String
expected
)
{
m_factory
.
setDomain
(
domain
);
m_factory
.
setIpAddress
(
"c0a83f99"
);
// 192.168.63.153
String
actual
=
m_factory
.
getNextId
();
Assert
.
assertEquals
(
expected
,
actual
);
}
}
cat-home/src/main/webapp/jsp/report/transaction_graphs.jsp
浏览文件 @
a4356bfd
<%@ page
contentType=
"text/html; charset=utf-8"
%>
<jsp:useBean
id=
"ctx"
type=
"com.dianping.cat.report.page.transaction.Context"
scope=
"request"
/>
<jsp:useBean
id=
"payload"
type=
"com.dianping.cat.report.page.transaction.Payload"
scope=
"request"
/>
<%@ page
contentType=
"image/html; charset=utf-8"
%>
<jsp:useBean
id=
"model"
type=
"com.dianping.cat.report.page.transaction.Model"
scope=
"request"
/>
${model.graph}
<%-- <table class="graphs">
<tr>
<td><img src="?op=graph&domain=${payload.domain}&type=${payload.type}&name=${payload.name}&graph=1" class="graph"></td>
<td><img src="?op=graph&domain=${payload.domain}&type=${payload.type}&name=${payload.name}&graph=2" class="graph"></td>
</tr>
<tr>
<td><img src="?op=graph&domain=${payload.domain}&type=${payload.type}&name=${payload.name}&graph=3" class="graph"></td>
<td><img src="?op=graph&domain=${payload.domain}&type=${payload.type}&name=${payload.name}&graph=4" class="graph"></td>
</tr>
</table> --%>
\ No newline at end of file
${model.graph}
\ No newline at end of file
cat-job/src/main/java/com/dianping/cat/job/hdfs/DefaultOutputChannelManager.java
浏览文件 @
a4356bfd
...
...
@@ -2,9 +2,7 @@ package com.dianping.cat.job.hdfs;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
java.net.InetAddress
;
import
java.net.URI
;
import
java.net.UnknownHostException
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
...
...
@@ -37,8 +35,6 @@ public class DefaultOutputChannelManager extends ContainerHolder implements Outp
private
Path
m_basePath
;
private
String
m_ipAddress
;
private
Map
<
String
,
OutputChannel
>
m_channels
=
new
HashMap
<
String
,
OutputChannel
>();
private
Map
<
String
,
Integer
>
m_indexes
=
new
HashMap
<
String
,
Integer
>();
...
...
@@ -103,19 +99,11 @@ public class DefaultOutputChannelManager extends ContainerHolder implements Outp
}
catch
(
Exception
e
)
{
throw
new
InitializationException
(
"Error when getting HDFS file system."
,
e
);
}
try
{
InetAddress
localHost
=
InetAddress
.
getLocalHost
();
m_ipAddress
=
localHost
.
getHostAddress
();
}
catch
(
UnknownHostException
e
)
{
m_logger
.
warn
(
"Unable to get local host!"
,
e
);
}
}
@Override
public
OutputChannel
openChannel
(
MessageTree
tree
,
boolean
forceNew
)
throws
IOException
{
String
path
=
m_builder
.
getHdfsPath
(
tree
,
m_ipAddress
);
String
path
=
m_builder
.
getHdfsPath
(
tree
.
getMessageId
()
);
OutputChannel
channel
=
m_channels
.
get
(
path
);
if
(
channel
==
null
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录