log.tin 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. #nop vim: set filetype=tt:;
  2. /*
  3. 模块名称:日志模块
  4. 模块说明:本文件属于框架代码的一部分,不建议修改。如有需求请在 GitHub 发 issue 或者 PR
  5. 版权声明:本文件属于 PaoTin++ 的一部分
  6. ===========
  7. PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
  8. 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
  9. ===========
  10. */
  11. #var gLog[buffer] {buffer.log};
  12. #var gLog[socket] {socket.log};
  13. #var gLog[info] {info.log};
  14. #var gLog[ok] {ok.log};
  15. #var gLog[warn] {warn.log};
  16. #var gLog[error] {error.log};
  17. #var gLog[msg] {msg.log};
  18. #var gLog[debug] {debug.log};
  19. #var gLog[PATH] {log};
  20. #var gLog[initialled] {false};
  21. #func {InitLog} {
  22. #local path {%1};
  23. #if { @existsDir{var} } {
  24. #var gLog[PATH] {var/log};
  25. };
  26. #else {
  27. #var gLog[PATH] {log};
  28. };
  29. #if { !@mkdir{$gLog[PATH]/$path} } {
  30. #return 0;
  31. };
  32. #var gLog[PATH] {$gLog[PATH]/$path};
  33. #var gLog[initialled] {true};
  34. option.Define {DebugLog} {Bool} {是否开启调试日志} {false};
  35. option.Define {DebugLogEcho} {Bool} {是否显示调试日志} {false};
  36. option.Define {DebugTags} {Slist} {记录调试日志的 tag 列表} {};
  37. option.Define {EchoCommand} {Bool} {是否回显发送的命令} {false};
  38. #return 1;
  39. };
  40. #alias {mudLog} {
  41. #if { "%0" == "%c> {$TELNET[GA]|$TELNET[EOR]}" } {
  42. #local cmd {@str.Trim{$gXttPipeLine[1]}};
  43. #if { &gXttPipeLine[] <= 1 } {
  44. log.write {$gLog[socket]} {%0(<259>$cmd<299>)(<239>EMPTY<299>)};
  45. };
  46. #else {
  47. log.write {$gLog[socket]} {%0(<259>$cmd<299>)};
  48. };
  49. };
  50. #else {
  51. log.write {$gLog[socket]} {%0};
  52. };
  53. };
  54. #alias {okLog} {log.write {$gLog[ok]} {<B030><128>%0} {ECHO}};
  55. #alias {warnLog} {log.write {$gLog[warn]} {<B330><138>%0} {ECHO}};
  56. #alias {errLog} {log.write {$gLog[error]} {<B300><118>%0} {ECHO}};
  57. #alias {msgLog} {log.write {$gLog[msg]} {<B033><168>%0} {ECHO}};
  58. #alias {infoLog} {log.write {$gLog[info]} {<B333>%0} {ECHO}};
  59. #alias {dbgLog} {
  60. #local tag {%1};
  61. #if { @option.IsDisable{DebugLog} } {
  62. #return;
  63. };
  64. #local echo {};
  65. #if { @option.IsEnable{DebugLogEcho} } {
  66. #local echo {ECHO};
  67. };
  68. #if { @slist.Contains{{@option.Get{DebugTags}};$tag} } {
  69. log.write {$gLog[debug]} {<B555><858>%0<999>} {$echo};
  70. };
  71. };
  72. #alias {noLog} {#0};
  73. #alias {{[a-z]{1,10}}Log %*} {
  74. #local logName {};
  75. #format logName {%l} {%1};
  76. log.write {${logName}.log} {%2};
  77. };
  78. #alias {log.write} {
  79. #local file {%1};
  80. #local text {%2};
  81. #local echo {%3};
  82. #if { "$gLog[initialled]" != "true" } {#return};
  83. #line logmode stamp #line log {$gLog[PATH]/$file} {$text<099>};
  84. #if { "$echo" == "ECHO" } {
  85. #echo {%s} {$text<099>};
  86. };
  87. };
  88. #alias {log.Open} {
  89. #if { "$gLog[initialled]" != "true" } {#return};
  90. #config {LOG} {RAW};
  91. #config {LOG LEVEL} {HIGH};
  92. #log timestamp {%Y-%m-%d %H:%M:%S };
  93. #log append {$gLog[PATH]/$gLog[buffer]};
  94. ttevent.Handle {RECEIVED INPUT} {log} {framework/log} {log.input};
  95. ttevent.Handle {RECEIVED LINE} {log} {framework/log} {mudLog $gTTEventArgZero};
  96. ttevent.Handle {SEND OUTPUT} {log} {framework/log} {log.sendLog};
  97. };
  98. #alias {log.input} {
  99. #if { "$gLog[initialled]" != "true" } {#return};
  100. #local needEcho {false};
  101. #if @option.IsDisable{EchoCommand} {
  102. #local needEcho {true};
  103. };
  104. #else {
  105. #line sub escape #var tmp {$gTTEventArgZero};
  106. #local cmds {};
  107. #list cmds create {$tmp};
  108. #if { &cmds[] > 1 } {
  109. #local needEcho {true};
  110. };
  111. };
  112. #if { "$needEcho" == "true" } {
  113. #local input {$gTTEventArgZero};
  114. #replace input {<} {\<};
  115. #echo {<029>%t INPUT: <429>%s<099>} {%Y-%m-%d %H:%M:%S} {$input};
  116. };
  117. };
  118. #alias {log.sendLog} {
  119. #local text {$gTTEventArgZero};
  120. #replace text {<} {\<};
  121. #format text {<029>SEND: <429>%p<099>} {$text};
  122. mudLog $text;
  123. #if @option.IsEnable{EchoCommand} {
  124. #echo {<029>%t %s} {%Y-%m-%d %H:%M:%S} {$text};
  125. };
  126. };