如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

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

区分好运行环境

对于thinkjslog日志,一般来说,是要区分debug模式和production模式的,两者记录的内容和方式是有很大差别的。所以,要先区分好,网站的模式是什么模式。一般来说,如果使用pm2管理进程的话,pm2.json中会定义执行的是production.js,也就是生产模式。而使用node run dev或者node development.js启动的网站的话,这个就会是调试模式。

上述区分仅仅是从经验常理上来说的,对于代码逻辑来说,判断标准只有一个:

const isDev = think.env === 'development';

也就是来自于production.js或者development.js中,配置实例的env参数。例如:

const instance = new Application({
  //...
  env: 'development'
  //...
});

以cmswing为例,如何定制thinkjs的log日志 - thinkjs_env

以cmswing为例,如何定制thinkjs的log日志(图4-1)

区分log日志输出位置

正常情况下来说,调试模式的话,详细的日志是输出到console里面的,而生产模式下,输出到console里面的信息很有限,大部分日志信息,都是保存到日志文件里面的。所以,无论是生产模式,还是调试模式,在pm2 log <site_name>中,能看到的,都是console里面输出的。但是,日志的详细程序是有很大差别的。

调试模式consolepm2 log 可以查看全部日志
生产模式console + filepm2 log 可以查看极少量信息,大多数需要到logs目录下查看日志文件

文件定义为:src/config/adapter.js

exports.logger = {
  type: isDev ? 'console' : 'dateFile',
  console: {
    handle: Console
  },
  file: {
    handle: File,
    backups: 10, // max chunk number
    absolute: true,
    maxLogSize: 50 * 1024, // 50M
    filename: path.join(think.ROOT_PATH, 'logs/app.log')
  },
  dateFile: {
    handle: DateFile,
    level: 'ALL',
    absolute: true,
    pattern: '-yyyy-MM-dd',
    alwaysIncludePattern: true,
    filename: path.join(think.ROOT_PATH, 'logs/app.log')
  }
};

实际上定义了三种模式,console/dateFile/file,但只使用了两种模式。

type: isDev ? 'console' : 'dateFile',

具体的参数含义,可以参照官方说明。https://thinkjs.org/zh-cn/doc/3.0/logger.html

目前,cmswing共输出了如下几项内容:1,系统启动信息。2,用户页面请求。3,执行的sql语句。其中,后面两项是可以定制的。请查看下面的内容:

log日志输出内容定制之用户请求

用户的页面请求记录配置如下:src/config/middleware.js

{
  handle: 'meta',
  options: {
    logRequest: isDev,
    sendResponseTime: isDev
  }
},
  • logRequest设置的是:是否把用户的页面请求写入到日志。
  • sendResponseTime是指:是否在用户页面请求的header头中,用X-Response-Time输出页面执行时间毫秒数。

以cmswing为例,如何定制thinkjs的log日志 - log_request

以cmswing为例,如何定制thinkjs的log日志(图4-2)

以cmswing为例,如何定制thinkjs的log日志 - response_header

以cmswing为例,如何定制thinkjs的log日志(图4-3)

log日志输出内容定制之用sql请求

页面sql执行记录配置如下:src/config/model.js

common: {
  logConnect: isDev,
  logSql: isDev,
  logger: msg => think.logger.info(msg)
},
  • logConnect指sql接入配置信息,比如mysql://root:root@127.0.0.1:3306/dbname
  • logSql指具体的sql语句。

以cmswing为例,如何定制thinkjs的log日志 - log_sql

以cmswing为例,如何定制thinkjs的log日志(图4-4)

小结

本文的基本日志设置,可以解释关于thinkjs的大部分日志的疑问,如果您还有更多问题,请参照thinkjs的官方说明。

更多苏南大叔带来的thinkjs的经验文章,请点击这里查看。https://newsn.net/tag/thinkjs

  【cmswing】秘籍文章入口,仅传授于有缘之人  cmswing

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

打赏领取小礼物

打赏任意金额,发送截图到邮箱 shang@newsn.net ,可以领取精选回馈如下(任选其一):
  • 《前端视频教程大礼包》一套
  • 《wordpress精选皮肤》一套
  • 《dedecms织梦精选模板》一套
感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!

岁月静好

关注互联网发展,关注苏南大叔的《程序如此灵动~》博客
本文章来自:程序如此灵动~
博客地址为:https://newsn.net/
原文地址为:https://newsn.net/say/cmswing-log.html
上一篇好文:定时/录屏/固定尺寸的截图软件faststonecapture
下一篇好文:如何利用webpack构建pdfjs加载pdf文件

如果您转载了本文章,出于某种原因,并没有注明作者或者出处。
在这里,苏南大叔也表示理解和支持。因为苏南大叔深深地明白:
您会在合适的时机,合适的地方,给本博客一个外链。对吧?
您若开心,便是安好!岁月静好,但愿世界和平,没有纷争~