从无到有创建一个聊天App七-log4js使用初步

安装

log4js是一个Node.js下的日志系统,功能非常强大,我今天也是先学点基本用法。可以访问官方地址查看各种高级使用技巧。
首先运行如下命令安装

npm install log4js

初始化

log4js的理念和java的log4j有点类似,我们先需要创建一个配置文件。log4js可以在js文件里定义配置项,也可以在json文件里定义。这里我们定义在json文件中。在项目目录下创建一个config目录,然后创建一个log4js.json文件,我们先写点简单的,输出到默认的控制台,做如下配置

{
  "appenders": {
    "out": {
      "type": "stdout"
    }
  },
  "categories": {
    "default": {
      "appenders": [
        "out"
      ],
      "level": "trace"
    }
  }
}

然后在我们的入口文件www\bin文件中加载这个配置项

var log4js = require('log4js');
log4js.configure('./config/log4js.json');

接下来定义一个log变量

var log = log4js.getLogger("startup");

就可以使用了,我们在Node服务启动的时候加上日志:

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
    log.debug('Listening on ' + bind);
}

运行程序,即可在控制台看到类似输出

[2018-06-07T21:27:25.129] [DEBUG] startup - Listening on port 3000

这个输出根据日志的级别还是彩色的哦,很好用。前面是时间戳,后面是日志的级别,紧跟着的是TAG,是我们在定义log变量的时候指定的,最后是我们要输出的内容。除了log.debug()函数之外,还有很多其它级别的函数,这个好理解。
接下来就是修改配置文件,满足我们不同的日志输出需求。

理解配置文件

配置文件有两个节点,一个叫appenders,一个叫categories。appenders定义了日志该输出到哪里,我这里是输出到控制台即stdout,除此之外,你还可以输出到文件甚至是远程服务器上。categories是对日志进行分类,其实就是我们刚刚定义log4js.getLogger("startup")中的TAG,但是这里我的categories下面并没有定义startup分类,所以走了默认的default分类。这样,刚刚的配置文件就很好理解了:我们定义了一个默认的分类,这个分类输出到out中,日志级别是trace,低于trace的日志不会被输出,out在appenders中定义了,它的type是stdout,即输出到标准的控制台。

输出到文件

下面我们将日志输出到文件中永久保存。修改配置文件如下

{
  "appenders": {
    "out": {
      "type": "stdout"
    },
    "app": {
      "type": "dateFile",
      "filename": "./log/application.log"
    }
  },
  "categories": {
    "default": {
      "appenders": [
        "out",
        "app"
      ],
      "level": "trace"
    }
  }
}

很简单,我们又定义了一个app类型的输出,它的type是dateFile,并在filename中指定了文件名,文件路径是相对于项目的根目录而言的,最后将它加到categories的default配置里面。重新运行程序,在log目录下即可发现application.log文件,内容和控制台的是一样的。这个dateFile类型很特别,会按天保存日志,避免所有的日志在一个文件里,导致日志文件越来越大的问题,这里只能明天再测试了。

错误日志的单独处理

我们需要把错误日志单独输出到一个文件里,便于发现。这里需要定义一个type为logLevelFilter的appender,这个比较特别,需要定义一个level告诉日志系统,需要过滤那个级别的日志,然后再定义一个appender告诉系统使用那个appender处理。为此,还需要再定义一个appender来处理错误日志。修改后的配置文件如下。

{
  "appenders": {
    "out": {
      "type": "stdout"
    },
    "app": {
      "type": "dateFile",
      "filename": "./log/application.log"
    },
    "errorFile": {
      "type": "file",
      "filename": "log/errors.log"
    },
    "errors": {
      "type": "logLevelFilter",
      "level": "ERROR",
      "appender": "errorFile"
    }
  },
  "categories": {
    "default": {
      "appenders": [
        "out",
        "app",
        "errors"
      ],
      "level": "trace"
    }
  }
}

这样我们将错误日志另行保存在log/errors.log文件中了。注意errors节点下面的appender节点,指定了另一个appenders下面的errorFile节点。它的type是file,我们并不需要按天保存错误日志。因为错误日志毕竟还是比较少的。
另外log4js官方也有一个Demo,大家也可参考,但是注意这个Demo的日志是不输出到控制台的。

其它高级用法

log4js除了appenders之外还有一个概念叫Layouts。这个定义了日志的样式,刚刚我们看到的日志都采用了默认的样式。前面有时间戳,还能彩色打印,每天的日志是文件名是什么。其实这些都可以配置。这里就不一一说明了,官方文档讲的很详细,而且用的也比较少。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值