NodeJS 将express js登录到输出文件?

wtzytmuj  于 2023-01-12  发布在  Node.js
关注(0)|答案(8)|浏览(104)

什么是记录我的express js web服务器的最好方法?内置的express.logger()只在屏幕上显示日志。我也可以将它们记录到/log文件夹中的文件中吗?而且当前的logger会自动记录请求和响应。我需要将一些应用程序数据记录到日志文件中。可以使用express.logger完成吗?
问候你,Lalith

3vpjnl9f

3vpjnl9f1#

要将快速日志或连接日志发送到文件,请使用节点的writeStream。例如,要将快速日志发送到 ./myLogFile.log
打开流到你的文件在附加模式与:

var logFile = fs.createWriteStream('./myLogFile.log', {flags: 'a'}); //use {flags: 'w'} to open in write mode

然后,在快速配置中用途:

app.use(express.logger({stream: logFile}));

应该也适用于connect. logger。

svdrlsy4

svdrlsy42#

看看express扩展的连接中间件,express.logger()和connect.logger()是一样的:
http://expressjs.com/api.html#middleware
http://www.senchalabs.org/connect/logger.html
日志记录器有一个流选项,可以设置输出的位置。默认情况下,它将输出发送到stdout。您还可以指定要使用的日志格式。

pdtvr36n

pdtvr36n3#

你应该试试winston

var logger = new (winston.Logger)({
  transports: [
    new (winston.transports.Console)(),
    new (winston.transports.File)({ filename: 'somefile.log' })
  ]
});
izj3ouym

izj3ouym4#

winston有点傻,多传输日志== tee(1),或者只是跟踪文件并传输数据,很容易

tcomlyy6

tcomlyy65#

使用log4js:

var log4js = require('log4js');
log4js.configure({
    appenders: [{type: 'console'},
                {type: 'file', filename: 'express.log', category: 'dev'}]
});

var logger = log4js.getLogger('dev');
logger.setLevel('DEBUG');

app.use(log4js.connectLogger(logger, {level: log4js.levels.DEBUG}));
0ve6wy6x

0ve6wy6x6#

对于HTTP请求日志记录:https://github.com/expressjs/morgan#write-logs-to-a-file

var express = require('express')
var fs = require('fs')
var morgan = require('morgan')

var app = express()

// create a write stream (in append mode)
var accessLogStream = fs.createWriteStream(__dirname + '/access.log', {flags: 'a'})

// setup the logger
app.use(morgan('combined', {stream: accessLogStream}))

app.get('/', function (req, res) {
  res.send('hello, world!')
})
e4yzc0pl

e4yzc0pl7#

你应该尝试使用集群http://learnboost.github.com/cluster/来构建节点。使用express来构建应用程序,而集群则接管包括日志记录在内的其余任务。
1.应用程序使用(express.logger());//在您的Express应用程序中,例如:app.js
1.使用(群集记录器('日志'));//在群集服务器中,例如:server.js

r6vfmomb

r6vfmomb8#

要进行日志记录或调试,请安装winston

npm i winston

调用此文件中的包

const { createLogger, transports, format } = require('winston');

const logger = createLogger({
  format: format.combine(
    format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss:ms' }),
    format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
  ),
  transports: [
    new transports.File({
      filename: './logs/logs.log',
      json: false,
      maxsize: 5242880,
      maxFiles: 5,
    }),
    new transports.Console(),
  ]
});

在你想调试的地方写这段代码,你可以调用不同的日志,比如信息,警告,错误。

logger.info('some info log message');
logger.warn('some warn log message');
logger.error('some error log message');

相关问题