Node.js:如何将请求对象写入文件
为了编写日志(请求信息),我尝试使用wirteFile和JSON.stringify方法。但是,它不起作用 请帮我做这件事Node.js:如何将请求对象写入文件,node.js,fs,writefile,Node.js,Fs,Writefile,为了编写日志(请求信息),我尝试使用wirteFile和JSON.stringify方法。但是,它不起作用 请帮我做这件事 var express = require('express'); var router = express.Router(); var fs = require('fs'); router.post('/', function(req, res, next) { fs.writeFile('requestLog.txt', JSON.stringify(req), '
var express = require('express');
var router = express.Router();
var fs = require('fs');
router.post('/', function(req, res, next) {
fs.writeFile('requestLog.txt', JSON.stringify(req), 'utf8',
function(error, req){
if(error) { console.log('error occurred') };
res.send('success post request');
})
});
module.exports = router;
我猜你应该写错字了
fs.writeFile('requestLog.txt', JSON.stringify(req.body), 'utf8'
如果要将所有请求写入日志文件中 我建议使用 morgan提供了许多选项来选择记录的内容和格式 以下是一个例子:
var express = require('express')
var fs = require('fs')
var morgan = require('morgan')
var path = require('path')
var app = express()
// create a write stream (in append mode)
var accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' })
// setup the logger
app.use(morgan('combined', { stream: accessLogStream }))
app.get('/', function (req, res) {
res.send('hello, world!')
})
我会使用一个专门的日志库来实现这一点,有几个很好的日志库。使用该库,您可以轻松地以各种格式记录请求 e、 g 日志条目的示例如下所示:
{
"level": "info",
"message": "HTTP GET /test",
"meta": {
"res": {
"statusCode": 200
},
"req": {
"url": "/test",
"headers": {
"host": "localhost:3000",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0",
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"accept-language": "en-GB,en;q=0.7,en-US;q=0.3",
"accept-encoding": "gzip, deflate",
"connection": "keep-alive",
"upgrade-insecure-requests": "1",
"if-none-match": "W/\"2-nOO9QiTIwXgNtWtBJezz8kv3SLc\""
},
"method": "GET",
"httpVersion": "1.1",
"originalUrl": "/test",
"query": {}
},
"responseTime": 2
}
}
请允许我与您分享一个函数示例,该函数可以帮助您创建新文件并将数据存储在其中:
// Open the file for writing
fs.open('your/path/nameOfFile.json', 'wx', (err, fileDescriptor)=>{
//'w' - Open file for writing. The file is created (if it does not exist)
//or truncated (if it exists).
//'wx' - Like 'w' but fails if the path exists.
//'w+' - Open file for reading and writing. The file is created (if it does not exist)
//or truncated (if it exists).
//'wx+' - Like 'w+' but fails if the path exists.
//open the file we want to create
//wx:open the file for writing
//fileDescriptor: part of callback returned, is a unique identifier
if(!err && fileDescriptor){
// Convert data to string
const stringData = JSON.stringify(data)
// Write to file and close it
fs.writeFile(fileDescriptor, stringData,err=>{
if(!err){
fs.close(fileDescriptor,err=>{
if(!err){
callback(false)
} else {
callback('Error closing new file')
}
})
} else {
callback('Error writing to new file')
}
})
} else {
callback('Could not create new file, it may already exist')
}
})
祝你好运 错误是什么?您想将所有请求作为日志写入一个文件?@Stamos是的,它太大了吗?
// Open the file for writing
fs.open('your/path/nameOfFile.json', 'wx', (err, fileDescriptor)=>{
//'w' - Open file for writing. The file is created (if it does not exist)
//or truncated (if it exists).
//'wx' - Like 'w' but fails if the path exists.
//'w+' - Open file for reading and writing. The file is created (if it does not exist)
//or truncated (if it exists).
//'wx+' - Like 'w+' but fails if the path exists.
//open the file we want to create
//wx:open the file for writing
//fileDescriptor: part of callback returned, is a unique identifier
if(!err && fileDescriptor){
// Convert data to string
const stringData = JSON.stringify(data)
// Write to file and close it
fs.writeFile(fileDescriptor, stringData,err=>{
if(!err){
fs.close(fileDescriptor,err=>{
if(!err){
callback(false)
} else {
callback('Error closing new file')
}
})
} else {
callback('Error writing to new file')
}
})
} else {
callback('Could not create new file, it may already exist')
}
})