功能
- 作为log日志库
- 方便调试
- 6种级别 trace>debug>info>warn>error>critical
- 可选输出到控制台、编辑器输出窗口、文件
下载链接
kazhafeizhale/ahk_log: ahk_log (github.com)
例子
V1 输出到控制台 文件 debug级别
#include <log>
log.is_out_file := true
log.level := log.level_debug
s1 := "100"
s2 := 100
s3 := "autohotkey"
s4 := {key : "nice"}
log.debug("debug")
log.trace("trace")
log.info(s1, s2, s3, s4) ;多个参数通过 "," 连接
log.warn(s1, s2, s3, s4)
log.err(s1, s2, s3, s4)
log.critical(s1, s2, s3, s4)
return
V1 输出到编辑器 文件 trace级别
#include <log>
log.is_out_file := true
log.is_use_editor := true
log.level := log.level_trace
s1 := "100"
s2 := 100
s3 := "autohotkey"
s4 := {key : "nice"}
log.debug("debug")
log.trace("trace")
log.info(s1, s2, s3, s4) ;多个参数通过 "," 连接
log.warn(s1, s2, s3, s4)
log.err(s1, s2, s3, s4)
log.critical(s1, s2, s3, s4)
return
V1 只输出到编辑器 trace 级别
#include <log>
log.is_use_editor := true
s1 := "100"
s2 := 100
s3 := "autohotkey"
s4 := {key : "nice"}
log.debug("debug")
log.trace("trace")
log.info(s1, s2, s3, s4) ;多个参数通过 "," 连接
log.warn(s1, s2, s3, s4)
log.err(s1, s2, s3, s4)
log.critical(s1, s2, s3, s4)
return
V2 输出到控制台 trace级别
;打开输出到文件
logger.is_out_file := true
;需要输出到编辑器终端时
;logger.is_use_editor := true
logger.level := logger.level_trace
logger.debug("debug")
logger.trace("trace")
s1 := "100"
s2 := 100
s3 := "autohotkey"
s4 := map("key", "nice")
obj := {key : "value"}
logger.info(obj)
;多个参数通过 "," 连接
;info warn critical err
logger.info(s1, s2, s3, s4)
logger.warn(s1, s2, s3, s4)
logger.err(s1, s2, s3, s4)
logger.critical(s1, s2, s3, s4)
loop(100)
logger.info(A_index)
logger.info(Log('10'))
#include <log>
效果:
说明
1、把lib文件放到解释器目录,作为标准库使用
脚本任意位置 #include <log>
2、默认输出到终端
3、默认不输出到文件
4、支持六种级别log,见例子
输出中文的时候经常乱码,此图为测试,循环比较多,有时候加五六条就随机出现乱码
第一条log-100ms-1s内可能会出现,延迟1s可以临时解决
问题笔记:
1、在scite中按F5运行调用#include 的脚本,跳出来的ConEmu控制台无内容。
解决:在scite中用”快速运行”(ctrl+shift+f5)替代”运行”(F5)来执行脚本。
原因:默认的F5运行,命令行为 “ahk路径/autohotkey.exe” /ErrorStdOut “脚本路径/jiaoben.ahk”。
/ErrorStdOut 参数会接手本次运行脚本的自身控制台,导致ConEmu控制台无法捕捉脚本控制台。
而“快速运行”则无此/ErrorStdOut 参数,不会影响ConEmu控制台的捕捉。
2、使用log4ahk后,ConEmu控制台可能会替代系统的cmd.exe,影响cmd.exe的使用。
解决:打开ConEmu》设置》集成》默认终端》将”强制使用conemu作为默认终端”前面的勾选取消》保存设置。
3、conemu控制台出现中文乱码:
调试方案:
用:iconcp:=DllCall(“GetConsoleCP”,”Int”)
iconoutcp:=DllCall(“GetConsoleOutputCP”,”Int”)
MsgBox,% “iconcp:” iconcp “`niconoutcp” iconoutcp
;获取当前控制台的输入和输出字符编码的代码,一般是936(简体中文)或96001(UTF-8)
用:dllCall(“SetConsoleOutputCP”, “UInt”, 936 ) ;一般中文用936,否则96001
dllCall(“SetConsoleCP”, “UInt”, 936 ) ;一般中文用936,否则96001
;设置当前控制台的输入和输出字符编码的代码,一般是936(简体中文)或96001(UTF-8)
进行调试。
能解决乱码吗?之前查了一些,在cmder里改编码也不管用。。。
有个现象, 纯英语环境的电脑是没有乱码的
粽子哥,你按我的方法调试也不行么?
不行 需要启动一次,然后延时,后面正常
之前我就改过cmder的编码
不行 需要启动一次,然后延时,后面正常
之前我就改过cmder的编码
现在用系统的,也挺好
你这个显示部分乱码,说明终端本身的编码没问题。问题应该发生在,字符串变量和字符串的传值过程过程。
conemu 自己的问题,你把cmder文件夹删掉就知道了
设置: log.is_use_cmder := false 可以避免这个问题
trace级别和debug级别具体什么差别
可能需要动态设置日志级别,如果是为了不同颜色,应用时直接设置trace就好了