Skip to content

Commit 1d4aa49

Browse files
committed
1.support json files(ELK logs);
2.support select multi record in context menu; 3.fix some bugs;
1 parent 2c10c31 commit 1d4aa49

22 files changed

+8476
-332
lines changed

FTL/ftlFile.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,11 +348,19 @@ namespace FTL
348348
typedef CFTextFile<CFFileUnicodeEncoding> CFUnicodeFile;
349349
typedef CFTextFile<CFFileUTF8Encoding> CFUTF8File;
350350

351+
enum PathType {
352+
ptUnknown, //未知: 比如没有权限访问其父目录
353+
ptNotExist, //指定的路径上没有 文件或目录(错误路径)
354+
ptFile,
355+
ptFolder
356+
};
357+
351358
//有 ATLPath 实现了很多功能, 如 RemoveFileSpec(删除路径最后的文件名)
352359
class CFPath
353360
{
354361
public:
355-
//创建指定路径中的全部目录
362+
FTLINLINE static PathType GetPathType(LPCTSTR pszPath);
363+
//创建指定路径中的全部目录
356364
FTLINLINE static BOOL CreateDirTree(LPCTSTR szPath);
357365
FTLINLINE static BOOL GetRelativePath(LPCTSTR pszFullPath, LPCTSTR pszParentPath, LPTSTR pszRelateivePath, UINT cchMax);
358366

FTL/ftlFile.hpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -897,6 +897,35 @@ namespace FTL
897897
return 0; // no support
898898
}
899899

900+
PathType CFPath::GetPathType(LPCTSTR pszPath)
901+
{
902+
PathType pathType = ptUnknown;
903+
DWORD dwAttrib = GetFileAttributes(pszPath);
904+
if (dwAttrib != INVALID_FILE_ATTRIBUTES)
905+
{
906+
if (dwAttrib & FILE_ATTRIBUTE_DIRECTORY)
907+
{
908+
pathType = ptFolder;
909+
}
910+
else {
911+
pathType = ptFile;
912+
}
913+
}
914+
else{
915+
DWORD dwError = GetLastError();
916+
if (ERROR_FILE_NOT_FOUND == dwError) {
917+
pathType = ptNotExist;
918+
}
919+
else {
920+
//TODO: 还有哪些错误
921+
FTLASSERT(ERROR_ACCESS_DENIED == dwError);
922+
923+
//ERROR_BAD_NETPATH
924+
}
925+
}
926+
927+
return pathType;
928+
}
900929
BOOL CFPath::CreateDirTree(LPCTSTR szPath)
901930
{
902931
TCHAR szDirName[MAX_PATH] = { 0 };

LogViewer/DialogSourceHistory.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@ void CDialogSourceHistory::OnOK()
7777
m_listSourcePaths.GetText(index, strPath);
7878

7979
if (nCheck > 0) {
80+
//check folder path exist
81+
if (ptFolder != FTL::CFPath::GetPathType(strPath)) {
82+
FTL::FormatMessageBox(m_hWnd, TEXT("Wrong source path, please the path exist"), MB_OK | MB_ICONWARNING, TEXT("Path:%s"), strPath);
83+
m_listSourcePaths.SetCurSel(index);
84+
return;
85+
}
8086
m_selectedPaths.Add(strPath);
8187
}
8288
if (isFirst)

LogViewer/LogItemView.cpp

Lines changed: 38 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ static strColumnInfo columnInfos[] =
3232
{TEXT("ModuleName"), 20,},
3333
{TEXT("FunName"), 20,},
3434
{TEXT("SourceFile"), 20,},
35+
{TEXT("TraceInfoLen"), 20,},
3536
{TEXT("TraceInfo"), 800,}
3637
};
3738

@@ -64,9 +65,9 @@ CLogItemView::~CLogItemView()
6465

6566
BEGIN_MESSAGE_MAP(CLogItemView, CListView)
6667
ON_COMMAND_EX(ID_EDIT_GOTO, &CLogItemView::OnEditGoTo)
67-
ON_COMMAND_EX(ID_EDIT_CLEAR_CACHE, &CLogItemView::OnEditClearCache)
68+
ON_COMMAND_EX(ID_EDIT_CLEAR_CACHE, &CLogItemView::OnEditClearCache)
6869
ON_COMMAND_EX(ID_EDIT_SET_SRC_PATHS, &CLogItemView::OnEditSetSrcPaths)
69-
ON_NOTIFY(HDN_ITEMCLICK, 0, &CLogItemView::OnHdnItemclickListAllLogitems)
70+
ON_NOTIFY(HDN_ITEMCLICK, 0, &CLogItemView::OnHdnItemclickListAllLogitems)
7071
//ON_NOTIFY_RANGE(LVN_COLUMNCLICK,0,0xffff,OnColumnClick)
7172
//ON_NOTIFY_REFLECT(LVN_GETDISPINFO, OnGetdispinfo)
7273
ON_NOTIFY_REFLECT(NM_CLICK, &CLogItemView::OnNMClick)
@@ -331,6 +332,10 @@ void CLogItemView::GetDispInfo(LVITEM* pItem)
331332
case type_TraceLevel:
332333
StringCchCopy(pItem->pszText,pItem->cchTextMax - 1,pszTraceLevel[pLogItem->level]);
333334
break;
335+
case type_TraceInfoLen:
336+
strFormat.Format(TEXT("%d"), pLogItem->traceInfoLen);
337+
StringCchCopy(pItem->pszText, pItem->cchTextMax - 1, (LPCTSTR)strFormat);
338+
break;
334339
case type_TraceInfo:
335340
if (NULL != pLogItem->pszTraceInfo){
336341
StringCchCopy(pItem->pszText,pItem->cchTextMax - 1, (LPCTSTR)pLogItem->pszTraceInfo);
@@ -672,7 +677,7 @@ CString CLogItemView::_GetSelectedText(int textType)
672677
break;
673678
}
674679

675-
if (NULL == strFormater.GetString())
680+
if (0 == strFormater.GetStringLength())
676681
{
677682
//first line
678683
strFormater.AppendFormat(TEXT("%s"), strText);
@@ -814,51 +819,62 @@ void CLogItemView::_HighlightSameThread(LogItemPointer pCompareLogItem)
814819
}
815820
}
816821

817-
int CLogItemView::_GetSelectedIdTypeValue(MachinePIdTIdType& idType) {
822+
int CLogItemView::_GetSelectedIdTypeValue(MachinePIdTIdTypeList& idTypeList) {
818823
CLogManager& logManager = GetDocument()->m_FTLogManager;
819824

820-
LVHITTESTINFO lvHistTestInfo = GetCurrentSelectInfo();
821-
if (lvHistTestInfo.iItem != -1)
825+
LogIndexContainer selectedItemList;
826+
INT nSelectedSubItem = -1;
827+
LONG nSelectCount = _GetSelectedLines(selectedItemList, nSelectedSubItem);
828+
if (nSelectCount > 0 && nSelectedSubItem != -1)
822829
{
823-
const LogItemPointer pLogItem = logManager.GetDisplayLogItem(lvHistTestInfo.iItem);
824-
if (pLogItem) {
825-
idType.machine = pLogItem->machine;
826-
idType.pid = pLogItem->processId;
827-
idType.tid = pLogItem->threadId;
830+
for (LogIndexContainerIter iter = selectedItemList.begin(); iter != selectedItemList.end(); ++iter)
831+
{
832+
const LogItemPointer pLogItem = logManager.GetDisplayLogItem(*iter);
833+
if(pLogItem){
834+
MachinePIdTIdType idType;
835+
idType.machine = pLogItem->machine;
836+
idType.pid = pLogItem->processId;
837+
idType.tid = pLogItem->threadId;
838+
idTypeList.push_back(idType);
839+
FTLTRACE(TEXT("Filter machine=%s, pid=%s, tid=%s"),
840+
idType.machine.c_str(), idType.pid.c_str(), idType.tid.c_str());
841+
}
828842
}
829843
}
830-
return lvHistTestInfo.iItem;
844+
845+
return nSelectedSubItem;
831846
}
832847

833848
void CLogItemView::OnDetailSelectCurrentPid() {
834849
int oldSelectIndex = 0;
835-
MachinePIdTIdType selectedIdType;
850+
MachinePIdTIdTypeList selectIdTypeList;
836851

837-
if(-1 != (oldSelectIndex = _GetSelectedIdTypeValue(selectedIdType))) {
852+
if(-1 != (oldSelectIndex = _GetSelectedIdTypeValue(selectIdTypeList))) {
838853
CLogManager& logManager = GetDocument()->m_FTLogManager;
839854

840855
UINT nCurSelectLine = _GetCurrentFirstSelectLine();
841-
logManager.OnlySelectSpecialItems(selectedIdType, ONLY_SELECT_TYPE::ostProcessId);
842-
GetDocument()->UpdateAllViews(this, VIEW_UPDATE_HINT_FILTER_BY_CHOOSE_PID, (CObject*)&selectedIdType);
843-
OnUpdate(this, VIEW_UPDATE_HINT_FILTER_BY_CHOOSE_PID, (CObject*)&selectedIdType);
856+
logManager.OnlySelectSpecialItems(selectIdTypeList, ONLY_SELECT_TYPE::ostProcessId);
857+
GetDocument()->UpdateAllViews(this, VIEW_UPDATE_HINT_FILTER_BY_CHOOSE_PID, (CObject*)&selectIdTypeList);
858+
OnUpdate(this, VIEW_UPDATE_HINT_FILTER_BY_CHOOSE_PID, (CObject*)&selectIdTypeList);
844859
_GotoSpecialLine(nCurSelectLine);
845860
}
846861
}
847862

848863
void CLogItemView::OnDetailSelectCurrentTid() {
849864
int oldSelectIndex = 0;
850-
MachinePIdTIdType selectedIdType;
851-
if (-1 != (oldSelectIndex = _GetSelectedIdTypeValue(selectedIdType))) {
865+
MachinePIdTIdTypeList selectIdTypeList;
866+
if (-1 != (oldSelectIndex = _GetSelectedIdTypeValue(selectIdTypeList))) {
852867
CLogManager& logManager = GetDocument()->m_FTLogManager;
853868

854869
UINT nCurSelectLine = _GetCurrentFirstSelectLine();
855-
logManager.OnlySelectSpecialItems(selectedIdType, ONLY_SELECT_TYPE::ostThreadId);
856-
GetDocument()->UpdateAllViews(this, VIEW_UPDATE_HINT_FILTER_BY_CHOOSE_TID, (CObject*)&selectedIdType);
857-
OnUpdate(this, VIEW_UPDATE_HINT_FILTER_BY_CHOOSE_TID, (CObject*)&selectedIdType);
870+
logManager.OnlySelectSpecialItems(selectIdTypeList, ONLY_SELECT_TYPE::ostThreadId);
871+
GetDocument()->UpdateAllViews(this, VIEW_UPDATE_HINT_FILTER_BY_CHOOSE_TID, (CObject*)&selectIdTypeList);
872+
OnUpdate(this, VIEW_UPDATE_HINT_FILTER_BY_CHOOSE_TID, (CObject*)&selectIdTypeList);
858873
_GotoSpecialLine(nCurSelectLine);
859874
}
860875
}
861876

877+
862878
BOOL CLogItemView::OnEraseBkgnd(CDC* pDC)
863879
{
864880
//减少闪烁

LogViewer/LogItemView.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class CLogItemView : public CListView
7272
afx_msg void OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult);
7373
afx_msg void OnUpdateIndicatorSelectedLogItem(CCmdUI *pCmdUI);
7474
private:
75-
int _GetSelectedIdTypeValue(MachinePIdTIdType& idType);
75+
int _GetSelectedIdTypeValue(MachinePIdTIdTypeList& idTypeList);
7676
UINT _GetCurrentFirstSelectLine();
7777
BOOL _GotoSpecialLine(UINT nGotoLineNumber);
7878
};

0 commit comments

Comments
 (0)