如何将 winston log 库记录的日志写入 mongo DB 数据库
Winston 非常适合配置不同的日志目的地。 在我们的小应用程序中,让我们创建另一个传输。 这次我想把日志保存到一个数据库中,MongoDB 简洁一些。 在 logger.js 文件上,复制以下代码块。 确保安装 Winston MongoDB,即 npm install winston-mongodb。
How to use MongoDB
下载并安装 MongoDB 社区服务器。
导航到您的环境变量(对于 Windows 用户),在用户变量下,选择路径 → 编辑 → 新建,添加 C:\Program Files\MongoDB\Server\4.4\bin(4.4 可能因您计算机上安装的 MongoDB 版本而异).
打开命令提示符并键入 mongo。 这将检查您是否已成功安装 MongoDB。 MongoDB shell 版本将打印在您的终端上,这意味着您的安装成功。
输入 use logs 创建数据库日志。
输入 db.createCollection("server_logs") 以创建 collection.
在 logger.js 里插入下列代码:
const { createLogger, format, transports } = require('winston'); // Import mongodb require('winston-mongodb'); module.exports = createLogger({ transports:[ // File transport new transports.File({ filename: 'logs/server.log', format:format.combine( format.timestamp({format: 'MMM-DD-YYYY HH:mm:ss'}), format.align(), format.printf(info => `${info.level}: ${[info.timestamp]}: ${info.message}`), )}), // MongoDB transport new transports.MongoDB({ level: 'error', //mongo database connection link db : 'mongodb://localhost:27017/logs', options: { useUnifiedTopology: true }, // A collection to save json formatted logs collection: 'server_logs', format: format.combine( format.timestamp(), // Convert logs to a json format format.json()) })] });
运行 node app.js 以启动服务器并访问以下 URL 以触发服务器响应和请求。
http://localhost:3000/ http://localhost:3000/calc http://localhost:3000/hello
日志将记录到 server.log 文件中。 打开 server.log 查看记录的日志。
任何错误日志都将记录在 MongoDB 数据库中。
输入 db.server_logs.find() 以查看日志。
MongoDB 传输采用 JSON 格式。 要将这些日志保存在 Mongo 数据库中,我们需要将它们转换为 JSON 格式。 这是将记录插入 Mongo 数据库集合的唯一格式。