首页主机资讯Ubuntu JS日志级别怎么设置

Ubuntu JS日志级别怎么设置

时间2025-10-01 09:37:03发布访客分类主机资讯浏览1149
导读: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应用中配置日志级别:
    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'));
    
    
    说明:Morgan通过预设字符串控制日志级别,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(不同库可能略有差异)。
  • 生产环境建议将日志级别设置为infowarn,避免过多调试信息影响性能;开发环境可设置为debug以获取详细信息。
  • 结合日志轮转工具(如logrotate)可自动管理日志文件大小和保留时间,防止磁盘空间耗尽。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu JS日志级别怎么设置
本文地址: https://pptw.com/jishu/715541.html
解读Linux dmesg中的磁盘I/O错误 怎样通过dmesg诊断系统启动问题

游客 回复需填写必要信息