玩转Nodejs日志管理log4js

玩转Nodejs日志管理log4js

alt Nodejs日志管理log4js

日志对任何的应用来说都是至关重要的。在Nodejs中使用express框架并没有自带的日志模块,我们可以选择log4js来完成日志记录的功能。

如果用过JAVA中log4j的同学,肯定对日志并不陌生,学习log4js会更得心应手的。

文章目录:

默认的控制台输出 通过log4js输出日志 配置log4js与express框架集成 根据项目配置log4js 优化log4js结构

请查看博客文章
http://blog.fens.me/nodejs-log4js/


15 回复

玩转Nodejs日志管理log4js

日志对任何应用来说都是至关重要的。在Node.js中使用Express框架并没有自带的日志模块,我们可以选择log4js来完成日志记录的功能。

如果你用过Java中的log4j,肯定对日志并不陌生,学习log4js会更得心应手的。

文章目录:

  • 默认的控制台输出
  • 通过log4js输出日志
  • 配置log4js与express框架集成
  • 根据项目配置log4js
  • 优化log4js结构

默认的控制台输出

首先,你需要安装log4js库:

npm install log4js --save

接下来,我们可以通过以下方式将日志输出到控制台:

const log4js = require('log4js');

// 初始化log4js
log4js.configure({
    appenders: { cheese: { type: 'console' } },
    categories: { default: { appenders: ['cheese'], level: 'info' } }
});

const logger = log4js.getLogger();
logger.info("这是信息级别的日志");
logger.error("这是错误级别的日志");

通过log4js输出日志

除了控制台输出外,你还可以将日志输出到文件或其他地方。例如,将日志输出到一个文件:

log4js.configure({
    appenders: { cheese: { type: 'file', filename: 'logs/app.log' } },
    categories: { default: { appenders: ['cheese'], level: 'info' } }
});

const logger = log4js.getLogger();
logger.info("这是写入到文件的日志");

配置log4js与express框架集成

在Express应用中集成log4js非常简单:

const express = require('express');
const log4js = require('log4js');

log4js.configure({
    appenders: { cheese: { type: 'file', filename: 'logs/app.log' } },
    categories: { default: { appenders: ['cheese'], level: 'info' } }
});

const app = express();
const logger = log4js.getLogger();

app.use(log4js.connectLogger(logger, { level: 'auto' }));

app.get('/', (req, res) => {
    logger.info(`访问了首页`);
    res.send('Hello World!');
});

app.listen(3000);

根据项目配置log4js

你可以根据不同的环境(如开发环境、生产环境)来配置不同的日志级别或输出方式:

const env = process.env.NODE_ENV || 'development';
let logConfig;

if (env === 'production') {
    logConfig = {
        appenders: { cheese: { type: 'file', filename: 'logs/app.log' } },
        categories: { default: { appenders: ['cheese'], level: 'error' } }
    };
} else {
    logConfig = {
        appenders: { cheese: { type: 'console' } },
        categories: { default: { appenders: ['cheese'], level: 'debug' } }
    };
}

log4js.configure(logConfig);

优化log4js结构

为了更好地管理和维护日志,可以创建多个日志类别,并为每个类别设置不同的输出方式和级别:

log4js.configure({
    appenders: {
        out: { type: 'stdout', layout: { type: 'basic' } },
        fileOut: { type: 'file', filename: 'logs/all-the-log.log', layout: { type: 'basic' } },
        http: { type: 'http', url: 'http://your-log-server.com/log' }
    },
    categories: {
        default: { appenders: ['out', 'fileOut'], level: 'all' },
        http: { appenders: ['http'], level: 'trace' }
    }
});

通过这些配置,你可以更灵活地管理你的日志系统。希望这些示例能帮助你更好地理解和使用log4js


赞一个!

node.js下都用tracer,对不对 ^_^

http://github.com/baryon/tracer

log 模块好多啊,用哪个好呢

看上去不错,有时间看看。

针对业务要求,自己摸索

我在用这个,但是官方wiki一直不全,有点坑

土办法 :

nohup node app 

建议直接看官方的demo

好的,下面是如何使用 log4js 进行日志管理的示例代码及说明。

默认的控制台输出

首先,我们需要安装 log4js 包:

npm install log4js --save

然后,在你的Node.js应用中引入并初始化 log4js

const log4js = require('log4js');

// 初始化log4js
log4js.configure({
    appenders: { cheese: { type: 'console' } },
    categories: { default: { appenders: ['cheese'], level: 'debug' } }
});

const logger = log4js.getLogger();
logger.trace('Entering cheese testing');
logger.debug('Got cheese.');
logger.info('Cheese is types: mild, semi, mature, extra mature');
logger.warn('Cheese is quite smelly.');
logger.error('Cheese is too ripe!');
logger.fatal('Cheese was eaten by mouse!');

通过log4js输出日志

上述代码将根据不同的日志级别(trace、debug、info、warn、error、fatal)将信息输出到控制台。你可以根据需要更改日志级别。

配置log4js与express框架集成

log4js 可以很容易地与 express 框架集成。这里展示如何创建一个中间件:

const express = require('express');
const log4js = require('log4js');

log4js.configure({
    appenders: { cheese: { type: 'file', filename: 'cheese.log' } },
    categories: { default: { appenders: ['cheese'], level: 'debug' } }
});

const logger = log4js.getLogger();
const app = express();

app.use(log4js.connectLogger(logger, { level: 'auto' }));

app.get('/', (req, res) => {
    logger.info(`Request to / at ${new Date().toISOString()}`);
    res.send('Hello World!');
});

app.listen(3000);

根据项目配置log4js

对于大型项目,可能需要更复杂的配置,例如将日志分为多个文件,或者根据环境(开发、测试、生产)进行不同的配置。以下是多文件配置的示例:

log4js.configure({
    appenders: {
        cheese: { type: 'file', filename: 'logs/cheese.log' },
        console: { type: 'console' }
    },
    categories: {
        default: { appenders: ['cheese', 'console'], level: 'debug' },
        development: { appenders: ['cheese'], level: 'debug' },
        production: { appenders: ['cheese'], level: 'error' }
    },
    pm2: true,
    pm2InstanceVar: 'PM2_INSTANCE_ID'
});

优化log4js结构

为了更好地组织和维护日志文件,可以使用自定义的布局器或添加更多的日志处理器。例如,你可以使用dateFile appender来按日期分割日志文件:

log4js.configure({
    appenders: {
        cheese: { type: 'dateFile', filename: 'logs/cheese.log', pattern: '.yyyy-MM-dd' },
        console: { type: 'console' }
    },
    categories: {
        default: { appenders: ['cheese', 'console'], level: 'debug' }
    }
});

这样可以确保每个日志文件对应一天的日志记录,便于日后的查阅和维护。

以上就是如何在Node.js应用中使用 log4js 进行日志管理的基本示例和配置方法。希望对你有所帮助!

回到顶部