iipeace / guider

A Practically Applicable Performance Analyzer for Real Product Development
https://iipeace.github.io/docs/guider.html
GNU General Public License v2.0
629 stars 92 forks source link

printdir - add json result #207

Closed yangsso closed 4 years ago

yangsso commented 4 years ago

@iipeace

yangsso commented 4 years ago

@iipeace 다시 확인해주세용

iipeace commented 4 years ago

printdir의 수정은 제대로 된 것 확인하였습니다 :) 그런데 JSON 형식으로 변환 시 newline 등이 들어가서 아래와 같이 출력되는 것을 확인하였습니다. 또한 JSON 자체가 디렉토리 구조처럼 트리 형태로 구성되어야 하는데 그렇지 않은 것 같습니다.

peacelee@osdc:~/test/yangsso$ guider/guider.py printdir -J { "dirInfos": "\n[/home/peacelee/test/yangsso] <SIZE: 23.3M, FILE: 249, DIR: 55>\n |-[guider] <SIZE: 1.7M, FILE: 10, DIR: 0>\n |-[agent] <SIZE: 1.3M, FILE: 184, D } peacelee@osdc:~/test/yangsso$ 예를 들어 아래와 같습니다.

{"home/peacelee/test/yangsso": {"size": "12.3K:, "file": "12K", "dir": 1K, "sub": {"home/iipeace/test/yangsso/test": {"size": "111M", ...

비슷한 형식의 타 명령 출력은 아래와 같습니다.

peacelee@osdc:~/test/yangsso$ guider/guider.py list -J { "7460": { "runtime": "00:00:10", "network": "", "cmdline": "python ./guider.py top ", "state": "sleep", "comm": "guider", "ppid": "2559", "rss": "29M" } }

작업이 되시면 rebase 후 PR 부탁드려요 :)

yangsso commented 4 years ago

@iipeace json 형식은 아래와 같습니다.

{ "parent_path": "[/Users/yangsoyeon/Documents/guider/guider]", "sub_dirs": [ { "parent_path": "[/Users/yangsoyeon/Documents/guider/guider/pycache]", "sub_dirs": [], "size": "900.4K", "dir": "0", "file": "1" } ], "size": "2.6M", "dir": "1", "file": "12" }

iipeace commented 4 years ago

@yangsso, 아래와 같은 형식은 어떨까요?

"/Users/yangsoyeon/Documents/guider/guider": {
  "sub": {
    "/Users/yangsoyeon/Documents/guider/guider/pycache": {
      "sub": {},
      "size": "900.4K",
      "dir": "0",
      "file": "1",
      "type": "dir",
      },
    "/Users/yangsoyeon/Documents/guider/guider/test.txt": {
      "sub": {},
      "size": "9.4K",
      "dir": "0",
      "file": "0",
      "type": "file",
      },
  "size": "2.6M",
  "dir": "1",
  "file": "12"
}

-a 옵션을 쓰면 file에 대한 정보까지도 출력합니다 :)

yangsso commented 4 years ago

평화님 이런식은 어떤가요??

{ "parent_path": "[/Users/yangsoyeon/Documents/guider/guider]", "sub_dirs": [ { "parent_path": "[/Users/yangsoyeon/Documents/guider/guider/pycache]", "sub_dirs": [], "files": [ { "./pycache/guider.cpython-36.pyc": { "size": "900.5K", "type": "file" } } ], "type": "dir", "size": "900.5K", "dir": "0", "file": "1" } ], "files": [ { "./guider.py": { "size": "1.7M", "type": "file" } }, { "./guiderLib.c": { "size": "7.6K", "type": "file" } }, { "./Makefile": { "size": "3.1K", "type": "file" } }, { "./test.py": { "size": "2.0K", "type": "file" } }, { "./guider": { "size": "1.4K", "type": "file" } }, { "./guiderTest": { "size": "1.2K", "type": "file" } }, { "./guiderMod.c": { "size": "1.0K", "type": "file" } }, { "./guider.conf": { "size": "360", "type": "file" } }, { "./requirements.txt": { "size": "112", "type": "file" } }, { "./main.py": { "size": "60", "type": "file" } }, { "./init.py": { "size": "0", "type": "file" } } ], "type": "dir", "size": "2.6M", "dir": "1", "file": "12" }

iipeace commented 4 years ago

key 값에 '[]'가 들어가서 error가 나는듯 합니다~

peacelee@osdc:~/test/yangsso/guider$ ./guider.py printdir -I .. -J

   _____       _     _
  / ____|     (_)   | |
 | |  __ _   _ _  __| | ___ _ __
 | | |_ | | | | |/ _` |/ _ \ '__|
 | |__| | |_| | | (_| |  __/ |
  \_____|\__,_|_|\__,_|\___|_|  ver.3.9.7_200313

Traceback (most recent call last):

[Warning] Fail to get write permission for /var/log/guider/guider.err so that use /tmp/guider.err

[Error] Please report /tmp/guider.err file to https://github.com/iipeace/guider/issues
  File "./guider.py", line 54923, in 
    main(args=None)
  File "./guider.py", line 54824, in main
    SysMgr.checkCmdMode()
  File "./guider.py", line 21701, in checkCmdMode
    SysMgr.printDirs(root, maxLevel)
  File "./guider.py", line 24808, in printDirs
    get_dirs(result, path, 0, -1)
  File "./guider.py", line 24688, in get_dirs
    total_info = get_dirs(info, full_path, level + 1, max_level)
  File "./guider.py", line 24687, in get_dirs
    result[parent_abspath]['sub_dirs'].append(info)
KeyError: '[/home/peacelee/test/yangsso/agent]'
iipeace commented 4 years ago

key(path)의 [ ] 기호는 빼주셔요 :)

yangsso commented 4 years ago

뺏어용~