美文网首页
log4js 日志加上行数和文件名

log4js 日志加上行数和文件名

作者: zhumu3 | 来源:发表于2021-01-26 15:25 被阅读0次

    在使用log4js打印日志的时候,我们需要打印对应的行数以及对应文件名的话,在网上没找到,所以就去了log4js的github链接,在百般尝试之后,终于在issue中找到了答案,现在将解决方法公布一下,应该是log4js在19年发布了一个版本开始支持打印行数和文件名的。

    1.主要就是在appenders中配置layout,其中的配置项的含义如下,我直接摘抄自https://log4js-node.github.io/log4js-node/layouts.html

    *   `%r` time in toLocaleTimeString format
    *   `%p` log level
    *   `%c` log category
    *   `%h` hostname
    *   `%m` log data
    *   `%d` date, formatted - default is `ISO8601`, format options are: `ISO8601`, `ISO8601_WITH_TZ_OFFSET`, `ABSOLUTE`, `DATE`, or any string compatible with the [date-format](https://www.npmjs.com/package/date-format) library. e.g. `%d{DATE}`, `%d{yyyy/MM/dd-hh.mm.ss}`
    *   `%%` % - for when you want a literal `%` in your output
    *   `%n` newline
    *   `%z` process id (from `process.pid`)
    *   `%f` full path of filename (requires `enableCallStack: true` on the category, see [configuration object](https://log4js-node.github.io/log4js-node/api.html))
    *   `%f{depth}` path’s depth let you chose to have only filename (`%f{1}`) or a chosen number of directories
    *   `%l` line number (requires `enableCallStack: true` on the category, see [configuration object](https://log4js-node.github.io/log4js-node/api.html))
    *   `%o` column postion (requires `enableCallStack: true` on the category, see [configuration object](https://log4js-node.github.io/log4js-node/api.html))
    

    翻译一下,我们需要的就是%f{depth},%l,%o,分别是文件名、行数、列数,其中在type为stdout中配置的pattern是控制台输出的日志模板,type为datefile是日志文件的日志模板。

    2.接着配置一下enableCallStack: true

    栗子如下:

    log4js.configure({
       appenders: {
        out: {
          type: 'stdout',
          layout: {
            type: 'pattern',
            pattern: '%[[%d] [%p] [%f{2}:%l] %m'
          }
        },
        app: {
          type: 'dateFile',
          keepFileExt: true,
          daysToKeep: 20,
          layout: {
            type: 'pattern',
            pattern: '%[[%d] [%p] [%f{2}:%l] %m'
          }
        },
      },
      categories: {
        default: {
          appenders: ['out', 'app'],
          level: 'debug',
          enableCallStack: true
        }
      }
    });
    

    3.最后就看到我们打的日志已经加上文件名和行数了


    image.png

    相关文章

      网友评论

          本文标题:log4js 日志加上行数和文件名

          本文链接:https://www.haomeiwen.com/subject/rlgkzktx.html