Ubuntu JS日志级别怎么设置
导读:Ubuntu下设置JavaScript(Node.js)日志级别的常见方法 在Ubuntu系统中,JavaScript应用程序(尤其是Node.js)的日志级别设置主要依赖第三方日志库(如winston、morgan、log4js等),以下...
Ubuntu下设置JavaScript(Node.js)日志级别的常见方法
在Ubuntu系统中,JavaScript应用程序(尤其是Node.js)的日志级别设置主要依赖第三方日志库(如winston、morgan、log4js等),以下是具体实现方式:
1. 使用Winston设置日志级别
Winston是Node.js最流行的日志库之一,支持多传输(控制台、文件等)和灵活的日志级别配置。
步骤:
- 安装winston:
npm install winston
- 初始化logger并设置级别:
说明:const winston = require('winston'); const logger = winston.createLogger({ level: 'info', // 核心配置:设置日志级别(可选:error、warn、info、debug、verbose等) format: winston.format.combine( winston.format.timestamp(), winston.format.printf(({ timestamp, level, message } ) => `${ timestamp} [${ level} ]: ${ message} `) ), transports: [ new winston.transports.Console(), // 输出到控制台 new winston.transports.File({ filename: 'error.log', level: 'error' } ), // 仅记录error级别到文件 new winston.transports.File({ filename: 'combined.log' } ) // 记录所有级别到文件 ] } ); // 测试日志输出 logger.debug('Debug信息(不会显示,因级别为info)'); logger.info('Info信息(会显示)'); logger.error('Error信息(会显示)');
level
参数决定了日志的最低输出级别,高于该级别的日志会被记录(如level: 'info'
会记录info、warn、error级别的日志)。
2. 使用Morgan设置Express.js日志级别
Morgan是Express.js的HTTP请求日志中间件,常用于记录请求详情。
步骤:
- 安装morgan:
npm install morgan
- 在Express应用中配置日志级别:
说明:Morgan通过预设字符串控制日志级别,const express = require('express'); const morgan = require('morgan'); const app = express(); // 常用预设级别:'combined'(详细)、'common'(简洁)、'dev'(开发环境,彩色输出)、'tiny'(最小化) app.use(morgan('dev')); // 设置日志级别为dev // 自定义日志格式(可选) app.use(morgan(':method :url :status :response-time ms - :res[content-length]')); app.get('/', (req, res) => res.send('Hello World')); app.listen(3000, () => console.log('Server running on port 3000'));
dev
级别会显示请求方法、URL、状态码、响应时间等详细信息,tiny
仅显示基本请求信息。
3. 使用Log4js设置日志级别
Log4js是类似Java Log4j的Node.js日志库,支持配置文件和多appender(输出目标)。
步骤:
- 安装log4js:
npm install log4js
- 创建配置文件
log4js-config.json
:{ "appenders": { "console": { "type": "console" } , "file": { "type": "file", "filename": "app.log" } , "errorFile": { "type": "file", "filename": "error.log" } } , "categories": { "default": { "appenders": ["console", "file"], "level": "info" } , // 默认级别为info "error": { "appenders": ["errorFile"], "level": "error" } // error类别仅记录error级别 } }
- 在应用中加载配置:
说明:通过const log4js = require('log4js'); log4js.configure('./log4js-config.json'); const logger = log4js.getLogger(); // 获取默认logger(级别为info) const errorLogger = log4js.getLogger('error'); // 获取error类别logger(级别为error) logger.info('Info信息(会输出到console和file)'); errorLogger.error('Error信息(会输出到errorFile)');
categories
配置不同类别的日志级别,default
为全局默认级别,可针对特定模块(如error
)设置更严格的级别。
4. 通过环境变量动态设置日志级别
为了灵活调整日志级别(如开发环境用debug
,生产环境用info
),可通过环境变量控制。
步骤:
- 安装dotenv(用于加载
.env
文件):npm install dotenv
- 创建
.env
文件:LOG_LEVEL=debug
- 在代码中读取环境变量并设置:
说明:通过require('dotenv').config(); const winston = require('winston'); const logger = winston.createLogger({ level: process.env.LOG_LEVEL || 'info', // 优先使用环境变量,未设置则默认为info format: winston.format.json(), transports: [new winston.transports.Console()] } ); logger.debug('Debug信息(仅在LOG_LEVEL=debug时显示)');
process.env.LOG_LEVEL
读取环境变量,适合需要频繁切换日志级别的场景(如Docker部署时通过-e LOG_LEVEL=debug
传递参数)。
注意事项
- 日志级别的优先级:
error
>warn
>info
>debug
>verbose
(不同库可能略有差异)。 - 生产环境建议将日志级别设置为
info
或warn
,避免过多调试信息影响性能;开发环境可设置为debug
以获取详细信息。 - 结合日志轮转工具(如
logrotate
)可自动管理日志文件大小和保留时间,防止磁盘空间耗尽。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu JS日志级别怎么设置
本文地址: https://pptw.com/jishu/715541.html