Skip to content

Latest commit

 

History

History
151 lines (44 loc) · 2.46 KB

19-mycat-log.md

File metadata and controls

151 lines (44 loc) · 2.46 KB

mycat 2.0 log

author:junwen 2019-7-1

mycat2使用固定的文件名记录访问的SQL以及资源使用情况

mycat-res.log 

记录资源使用情况

mycat-sql.log

记录原始的SQL以及发送到mysql的dataNode以及修改后的SQL

mycat-replica-indexes.log

记录主从切换记录

mycat2拥有日志记录器的封装接口,在实现上日志使用slf4j作为实现,与slf4j这些第三方日志工具不同之处是mycat日志记录器在记录日志的同时还可以生成错误报文,该错误报文可以作为响应.

在生成错误报文的错误码上,暂时没有统一的错误码规划.mycat作为mysql路由代理,其错误码并不能与mysql错误码一一对应,所以可以都使用ER_UNKNOWN_ERROR作为错误码.考虑到开发中的代码在不断变化,给每个日志赋予一个错误码的工作只能在模块稳定之后进行.

mycat2日志并没有使用i18n,统一使用英文作为日志语言.

日志字符串模板并没集中放置在一个类,而是分散到程序代码中.但是可以通过工具扫描代码中的日志代码,帮助生成用户日志文档.如果无法从该文档看出日志是什么意义,就要考虑改善该日志了,这将是一个长期的工作.

在开发中日志输出的代码应该有以下格式,以配合日志扫描程序

每个日志模板应该在一行里写完整,不能使用+拼接字符串,也不能把日志模板作为常量.

warn("log");//ok
info("log");//ok
error("log");//ok
debug("log");//ok
errorPacket("log");//ok and return a payload of error pakcet 

warn("log {} {} {}",1,2,3);//ok
info("log {} {} {}",1,2,3);//ok
error("log {} {} {}",1,2,3");//ok
debug("log {} {} {}",1,2,3);//ok
errorPacket("log {} {} {}",1,2,3);//ok and return a payload of error pakcet 
errorPacket(123,"log {} {} {}",1,2,3);//ok and return a payload of error pakcet 
new MycatException("error!");//ok and throw a exception;
new MycatException(123,"error!");//ok and throw a exception;
            
   

错误例子

warn("log"+"log2");//error and collect warn("log" 
warn(LOG_MESSAGE);//error,LOG_MESSAGE is a variable

Creative Commons License This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.