以cmswing为例,如何定制thinkjs的log日志
发布于 作者:苏南大叔 来源:程序如此灵动~

本文以cmswing
的日志功能为例,说一下thinkjs
的log
项目定制。而thinkjs
的log
功能又是基于大名鼎鼎的log4j
的,cmswing
的日志在debug
模式下,是输出到console
里的。而production
模式下,是写入到根目录下的logs
目录下面的。

下面是详细的log
日志相关定制内容。
区分好运行环境
对于thinkjs
的log
日志,一般来说,是要区分debug
模式和production
模式的,两者记录的内容和方式是有很大差别的。所以,要先区分好,网站的模式是什么模式。一般来说,如果使用pm2
管理进程的话,pm2.json
中会定义执行的是production.js
,也就是生产模式。而使用node run dev
或者node development.js
启动的网站的话,这个就会是调试模式。
上述区分仅仅是从经验常理上来说的,对于代码逻辑来说,判断标准只有一个:
也就是来自于production.js
或者development.js
中,配置实例的env
参数。例如:

区分log
日志输出位置
正常情况下来说,调试模式的话,详细的日志是输出到console
里面的,而生产模式下,输出到console
里面的信息很有限,大部分日志信息,都是保存到日志文件里面的。所以,无论是生产模式,还是调试模式,在pm2 log <site_name>
中,能看到的,都是console
里面输出的。但是,日志的详细程序是有很大差别的。
调试模式 | console | pm2 log 可以查看全部日志 |
生产模式 | console + file | pm2 log 可以查看极少量信息,大多数需要到logs目录下查看日志文件 |
文件定义为:src/config/adapter.js
。
实际上定义了三种模式,console
/dateFile
/file
,但只使用了两种模式。
具体的参数含义,可以参照官方说明。https://thinkjs.org/zh-cn/doc/3.0/logger.html 。
目前,cmswing
共输出了如下几项内容:1,系统启动信息。2,用户页面请求。3,执行的sql语句。其中,后面两项是可以定制的。请查看下面的内容:
log日志输出内容定制之用户请求
用户的页面请求记录配置如下:src/config/middleware.js
。
logRequest
设置的是:是否把用户的页面请求写入到日志。sendResponseTime
是指:是否在用户页面请求的header头中,用X-Response-Time
输出页面执行时间毫秒数。


log日志输出内容定制之用sql请求
页面sql执行记录配置如下:src/config/model.js
。
logConnect
指sql接入配置信息,比如mysql://root:root@127.0.0.1:3306/dbname
。logSql
指具体的sql语句。

小结
本文的基本日志设置,可以解释关于thinkjs
的大部分日志的疑问,如果您还有更多问题,请参照thinkjs
的官方说明。
更多苏南大叔带来的thinkjs
的经验文章,请点击这里查看。https://newsn.net/tag/thinkjs。


