• NodeJs之log4js


    log4js


    log4js是一个管理,记录日志的工具。

    其实与morgan的作用类似。

    安装


    npm install -g log4js
    

    log4js的6个日志级别

    分别是:trace(蓝色)、debug(青色)、info(绿色)、warn(黄色)、error(红色)、fatal(粉色)

    这6个level方便我们给日志设置不同的输出等级,不同的颜色也方便我们区分。

    var log4js = require('log4js');
    
    var logger = log4js.getLogger();
    
    logger.trace('test1')
    logger.debug('test2')
    logger.info('test3')
    logger.warn('test4')
    logger.error('test4')
    logger.fatal('test4')
    

    日志的效果如下:

    log4js的配置

    file类型日志

    当然,我们也可以具体配置log4js。

    常用配置有##appenders##,##Levels##.appenders用来配置日志的具体的展现形式,Levels用来配置日志的展现等级。

    例如:我们配置一个写入到文件中的日志。

    var log4js = require('log4js');
    
    //var logger = log4js.getLogger();
    
    log4js.configure({
    	"appenders":[{
    		"type":"file",
    		"filename":__dirname+"/logs/logger.log",
    		"category":"logger" 
    	}]
    })
    
    var loggerTest = log4js.getLogger('logger')
    loggerTest.info('test')
    
    

    logger.log文件中:

    [2016-12-11 16:32:51.303] [INFO] logger - test
    
    

    一定要先建立logs文件夹,不然会报错哦

    我们也可以配置多个:

    var log4js = require('log4js');
    
    //var logger = log4js.getLogger();
    
    log4js.configure({
    	"appenders":[{
    		"type":"file",
    		"filename":__dirname+"/logs/logger.log",
    		"category":"logger" 
    	},{
    		"type":"file",
    		"filename":__dirname+"/logs/logger2.log",
    		"category":"logger2" 
    	}]
    })
    
    var loggerTest = log4js.getLogger('logger')
    var loggerTest2 = log4js.getLogger('logger2')
    loggerTest.info('test')
    loggerTest2.info('test2')
    
    

    我们也可以控制输出的级别,通过在配置文件中添加##levels##

    var log4js = require('log4js');
    
    //var logger = log4js.getLogger();
    
    log4js.configure({
    	"appenders":[{
    		"type":"file",
    		"filename":__dirname+"/logs/logger.log",
    		"category":"logger" 
    	},{
    		"type":"file",
    		"filename":__dirname+"/logs/logger2.log",
    		"category":"logger2" 
    	}],
    	"levels":{
    		"logger":"info",
    		"logger2":"warn"
    	}
    })
    
    var loggerTest = log4js.getLogger('logger')
    var loggerTest2 = log4js.getLogger('logger2')
    loggerTest.info('test')
    loggerTest2.info('test2')
    
    

    datefilel类型的日志

    上面的日志输出的名称是固定的,这可能不是我们想要的。我们想要每天一个日志,我们需要修改##type##属性。

    "type":"datefile",
    "filename":__dirname+"/logs/logger",
    "pattern": "-yyyy-MM-dd-hh.log",
    "alwaysIncludePattern": true,
    "category":"logger" 
    

    这样输出的日志的文件格式类似这种:logger-2016-12-11-18.log

    需要配合##pattern##,##alwaysIncludePattern##来使用。

    appenders是用来配置日志输出源信心的。

    pattern:表示一个文件的时间命名格式,只有配合datefile才起作用
    filename:表示文件的路径名称
    type:表示日志输出类型
    category:可以理解为一类日志的表示
    alwaysIncludePattern:表示日志是否包含命名格式,只有配合datefile才起作用
    backups:表示备份的文件数量,配合file类型

    其他具体的内容可以参见:log4js的wiki

    结合express


    var log4js = require('log4js');
    var express = require("express");
    var app = express();
    log4js.configure({
    	appenders: [
    		{ type: 'console' },
    		{ type: 'file', filename: 'logs/log4jsconnect.log', category: 'log4jslog' }
    	]
    });
    var logger = log4js.getLogger('log4jslog');
    app.use(log4js.connectLogger(logger, { level: 'auto' }));
    
    app.get('/', function(req,res) {
    	res.send('hello world');
    });
    

    打印出:

    [2016-12-11 18:53:24.463] [INFO] log4jslog - ::1 - - "GET / HTTP/1.1" 200 170 "" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
    [2016-12-11 18:53:24.493] [INFO] log4jslog - ::1 - - "GET /stylesheets/style.css HTTP/1.1" 200 111 "http://localhost:3000/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
    [2016-12-11 18:53:24.599] [ERROR] log4jslog - ::1 - - "GET /favicon.ico HTTP/1.1" 404 1188 "http://localhost:3000/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
    

    除了上述的常用的方法,如果想要了解很多使用细则的话。可以参看##log4js的example##

    出错的地方


    一定要注意datafile与dateFile。在windows与linux上的大小写区分!

  • 相关阅读:
    西安.NET俱乐部群 推广代码
    跟我学Makefile(六)
    跟我学Makefile(五)
    跟我学Makefile(四)
    跟我学Makefile(三)
    跟我学Makefile(二)
    Kconfig文件说明2
    Kconfig文件说明
    kernel内核配置说明
    makefile中ifeq与ifneq dev/null和dev/zero简介 dd命令
  • 原文地址:https://www.cnblogs.com/zqzjs/p/6160205.html
Copyright © 2020-2023  润新知