mtail 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. #!/usr/bin/env bash
  2. #nop vim: set filetype=tt:;
  3. #nop {
  4. ID=$1
  5. LOGS="${*:2}"
  6. if [ "x$LOGS" == "x" ]; then
  7. LOGS="chat qq jh helpme fullsk quest job tell"
  8. fi
  9. if [ "x$ID" == "x" ]; then
  10. echo -e '用法: \x1b[1;32;92mmtail \x1b[1;33;93m<id>\x1b[0m [<log1> <log2>...]'
  11. echo '日志名称不用加路径和 .log 后缀,只要文件名就好。'
  12. echo "可以同时显示多个日志,默认显示日志: $LOGS"
  13. echo '别忘了写 ID,加油!'
  14. exit
  15. fi
  16. if [[ ! -d "var/log/$ID" && ! -d "log/$ID/" ]]; then
  17. echo 没找到 $ID 的游戏日志。请先打开游戏再执行本操作。;
  18. exit
  19. fi
  20. exec tt++ -G -t MLOG-$ID bin/mtail $ID $LOGS
  21. exit
  22. };
  23. #event {PROGRAM START} {
  24. #if { "%0" == "" } {
  25. #line quiet #end {\};
  26. };
  27. disable-all-keys;
  28. less-mode;
  29. #alias {okLog} {#0};
  30. #alias {warnLog} {#0};
  31. #alias {prompt.Set} {#0};
  32. #alias {prompt.refresh} {#0};
  33. #read plugins/lib/ui/beautify.tin;
  34. #local _ {@lib_ui_beautify.Init{}};
  35. monitor-log %0;
  36. };
  37. #alias {disable-all-keys} {
  38. #local ch {};
  39. #parse {abcdefghijklmnopqrstuvwxyz} {ch} {
  40. #macro {\c$ch} {#0};
  41. #macro {$ch} {#0};
  42. };
  43. #parse {ABCDEFGHIJKLMNOPQRSTUVWXYZ} {ch} {
  44. #macro {$ch} {#0};
  45. };
  46. #parse {`1234567890-=~!@#$%^&*()_+} {ch} {
  47. #macro {$ch} {#0};
  48. };
  49. #parse {,./<>?;':"[]\\|} {ch} {
  50. #macro {$ch} {#0};
  51. };
  52. #macro {\x7B} {#0};
  53. #macro {\x7D} {#0};
  54. #macro { } {#0};
  55. #macro {\cn} {switch-log +};
  56. #macro {\cp} {switch-log -};
  57. #var ctrl-c-pressed {false};
  58. #macro {\cc} {
  59. #if { "$ctrl-c-pressed" == "false" } {
  60. #echo {如果你想要退出,请再按一次 Ctrl+C。};
  61. #var ctrl-c-pressed {true};
  62. #delay cancel {
  63. #echo {等待超时,恢复正常。};
  64. #var ctrl-c-pressed {false};
  65. } {1.000};
  66. };
  67. #else {
  68. #screen set title {NOLOG};
  69. #line quiet #end {\};
  70. };
  71. };
  72. };
  73. #alias {less-mode} {
  74. #config {mouse} on;
  75. #event {SCROLLED MOUSE WHEEL DOWN} {#buffer down 10};
  76. #event {SCROLLED MOUSE WHEEL UP} {#buffer up 10};
  77. #event {SCROLLED CTRL MOUSE WHEEL DOWN} {#buffer down 1};
  78. #event {SCROLLED CTRL MOUSE WHEEL UP} {#buffer up 1};
  79. #macro {g} {#buffer home};
  80. #macro {G} {#buffer end};
  81. #macro {j} {#buffer down 1};
  82. #macro {k} {#buffer up 1};
  83. #macro {\cf} {#buffer down 20};
  84. #macro {\cb} {#buffer up 20};
  85. #macro {\ch} {hide-date};
  86. };
  87. #var hide-date {1};
  88. #alias {hide-date} {
  89. #switch {$hide-date} {
  90. #case {0} {#var hide-date 1; #echo {<160>日志显示模式已切换至 HH:MM:SS<299>}};
  91. #case {1} {#var hide-date 2; #echo {<160>日志显示模式已切换至 HH:MM<299>}};
  92. #case {2} {#var hide-date 3; #echo {<160>日志显示模式已切换至不显示时间戳<299>}};
  93. #case {3} {#var hide-date 0; #echo {<160>日志显示模式已切换至 YYYY-mm-dd HH:MM:SS<299>}};
  94. };
  95. };
  96. #alias {switch-log} {
  97. #local dir {%1};
  98. #if { "$dir" == "" } {
  99. #local dir {+};
  100. };
  101. #session $dir;
  102. #buffer end;
  103. #script logname {echo $LOGNAME > tmux/$ID/log-name};
  104. #screen set title {MLOG-${ID}-${LOGNAME}};
  105. };
  106. #alias {monitor-log%+1..s%+1..S{?:|\s+(.*)}$} {
  107. #local id {%2};
  108. #local logs {%3};
  109. #local path {};
  110. #script path {test -d var/log/$id/ && echo var/log/$id || echo log/$id};
  111. #local path {$path[1]};
  112. #list logs create $logs;
  113. #local log {};
  114. #foreach {$logs[]} {log} {
  115. #local file {$path/${log}.log};
  116. #script {tmp} {touch $file};
  117. #line quiet #run {log-$log} {tail -n 1000 -f $path/${log}.log};
  118. #var LOGNAME {$log};
  119. #var ID {$id};
  120. };
  121. switch-log;
  122. };
  123. #action {~^{\d\d\d\d-\d\d-\d\d }{\d\d:\d\d}{:\d\d}{ }%*$} {
  124. #switch {$hide-date} {
  125. #case {0} {#echo {%s} {@Beautify{%0}}};
  126. #case {1} {#echo {%s} {@Beautify{%2%3%4%5}}};
  127. #case {2} {#echo {%s} {@Beautify{%2%4%5}}};
  128. #case {3} {#echo {%s} {@Beautify{%5}}};
  129. };
  130. #line gag;
  131. };
  132. #event {SCREEN RESIZE} {#buffer end};