node 自定义日志

该博客主要介绍Node配置相关内容。包括安装nodemon和cross - env依赖,在package.json中添加dev与prd配置,还提及在app.js中使用morgan,最后说明了在开发环境和生产环境分别使用npm run dev和npm run prd的操作及效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装依赖

安装 nodemon 与cross-env
cnpm i nodemon cross-env --save-dev

package.json配置

`.添加dev与 prd配置
“dev”: “cross-env NODE_ENV=dev nodemon node ./bin/www”,
“prd”: “cross-env NODE_ENV=production nodemon node ./bin/www”

{
  "name": "node0517",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www",
    "dev": "cross-env NODE_ENV=dev nodemon node ./bin/www",
    "prd": "cross-env NODE_ENV=production nodemon node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "jade": "~1.11.0",
    "moment": "^2.24.0",
    "morgan": "~1.9.1",
    "mysql2": "^1.6.5",
    "sequelize": "^5.8.6"
  },
  "devDependencies": {
    "cross-env": "^5.2.0",
    "nodemon": "^1.19.0"
  }
}

使用

app.js 配置, 使用morgan,可以在npm上查看

let logger = require('morgan');
const ENV = process.env.NODE_ENV
if (ENV !== 'production') {
  // 开发环境
  app.use(logger('dev'))
} else {
  // 生产环境,写入日志
  const logFileName = path.join(__dirname, 'logs', 'logger.log')
  const writeStream = fs.createWriteStream(logFileName, {
    flags: 'a'
  })
  app.use(logger('combined', {
    stream: writeStream
  }))
}

安装依赖

使用
npm run dev (开发环境,控制台输出日志)
npm run prd (生产环境,会写入日志)

### 如何在 Winston 中自定义日志级别 Winston 提供了一种灵活的方式来设置和管理日志级别。通过 `levels` 和 `colors` 属性,可以轻松实现自定义日志级别的需求[^5]。 以下是具体的实现方式: #### 定义自定义日志级别 可以通过向 `createLogger` 方法传递一个对象来自定义日志级别。该对象应包含键值对形式的等级名称及其对应的优先级数值。较低的数字表示更高的优先级。 ```javascript const winston = require('winston'); // 自定义日志级别 const customLevels = { emerg: 0, alert: 1, crit: 2, error: 3, warn: 4, notice: 5, info: 6, debug: 7, }; // 创建 Logger 实例并指定自定义日志级别 const logger = winston.createLogger({ levels: customLevels, // 使用自定义日志级别 format: winston.format.combine( winston.format.colorize(), winston.format.simple() ), transports: [ new winston.transports.Console(), new winston.transports.File({ filename: 'custom-levels.log' }) ] }); logger.emerg('This is an emergency log.'); logger.alert('This is an alert log.'); logger.crit('This is a critical log.'); ``` 此代码片段展示了如何定义一个新的日志级别集合,并将其应用于 Winston 的日志记录器实例中。 #### 配置颜色支持 为了使自定义日志级别更具可读性和区分度,还可以为这些新级别分配特定的颜色。这需要扩展默认的颜色映射表。 ```javascript // 扩展颜色方案以匹配新的日志级别 const colors = { emerg: 'red', alert: 'magenta', crit: 'yellow bold', error: 'red', warn: 'yellow', notice: 'cyan', info: 'green', debug: 'blue' }; winston.addColors(colors); // 测试带颜色的日志输出 logger.log({ level: 'emerg', message: 'System is unusable!' }); logger.log({ level: 'alert', message: 'Action must be taken immediately.' }); logger.log({ level: 'crit', message: 'Critical conditions have been met.' }); ``` 以上脚本不仅设置了独特的视觉效果给每类消息,还利用了 `.log()` 函数动态指定了日志条目的层次结构[^5]。 #### 结合实际应用场景 当构建更复杂的系统时,可能希望依据运行环境调整行为模式——比如开发阶段倾向于详尽报告而生产环境下则精简至必要信息。这种灵活性同样适用于定制化后的 logging framework 上面提到的例子能够很容易地融入条件判断逻辑里去适应不同情境下的需求变化[^2]。 ```javascript if (process.env.NODE_ENV === 'development') { logger.level = 'debug'; } else { logger.level = 'warn'; } ``` 这样可以根据当前所处的状态自动切换显示范围内的最低门槛从而优化性能表现同时也便于调试工作开展[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值