Node.js 日志
Node.js 是一个开源的跨平台 JavaScript 运行时环境。使用日志记录对于了解整个 Node.js 应用程序生命周期至关重要。
您可以使用 winston、Bunyan 或 Morgan 等日志框架记录 Node.js 应用程序的日志,并将日志发送至 Site24x7 AppLogs 进行监控。
使用 winston
作为 Node.js 最流行的日志框架,winston 支持多种传输方式,如控制台、文件和 API。使用文件传输方式将日志发送至 Site24x7。
以下是使用 winston 将信息记录到文件的步骤:
- 确保您的机器上已安装最新版本的 Node.js 和 Node Package Manager (NPM)。您可以使用以下命令安装 winston:
$ npm install winston
- 添加以下代码以声明 winston 模块中可用的默认日志记录器:
const { createLogger, format, transports } = require('winston');
const logger = createLogger({
level: 'info',
exitOnError: false,
format: format.json(),
transports: [
new transports.File({ filename: `<application_dir>/logs/<FILE_NAME>.log` }),
],
});
module.exports = logger;
logger.log('info', 'Hello World!');注意请确保在上述代码片段中提供文件名。
- 要验证日志记录,请检查以下示例日志是否已在您的日志文件中生成:
{"level":"info","message":"Hello World!","timestamp":"2022-05-15T14:52:05.337Z"}
日志管理入门
- 登录您的 Site24x7 账户。
- 下载并安装 Site24x7 服务器监控代理(Windows | Linux)。
- 转到管理 > AppLogs > 日志配置文件 > 添加日志配置文件。
- 配置文件名称:为日志配置文件输入名称。
- 选择日志类型:从下拉菜单中选择 Node JS。
- 日志来源:从下拉菜单中选择本地文件。
- 用于搜索日志的文件列表:添加 winston 将文件传输到的文件路径。
例如:<application_dir>/logs/<FILE_NAME>.log
- 选择服务器,然后单击保存。
日志模式与日志示例
使用多日志模式支持,您可以添加与日志匹配的所需日志模式。以下是适用于 Node.js 日志的日志示例及其对应日志模式:
Morgan 访问日志
日志模式
$RemoteAddress$ - $RemoteUser$ [$DateTime:date$] "$Method$ $RequestURI$ $Protocol$" $Status:number$ $BytesSent:number$ "$Referer$" "$UserAgent$"
日志示例
127.0.0.1 - - [18/Jul/2017:23:59:18 +0530] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"
Morgan
日志模式
$DateTime:date:agent_time$ $Method$ $URL$ $StatusCode$ $BytesWritten:number$ - $Duration:decimal$ ms
日志示例
GET www.zylker.com 304 5000 - 2.306 ms
winston
日志模式
json $timestamp as DateTime:date:MMM-dd-yyyy HH:mm:ss$ $level as LogLevel$ $message as Message$
日志示例
{"message": "Events Error: Unauthenticated user","level": "error","timestamp": "Jul-10-2022 02:02:14"}
winston trace
日志模式
$LogLevel$: $DateTime:date:MMM-dd-yyyy HH:mm:ss$: ![ trace_id = $TraceID$ ] [ span_id = $SpanID$ ]! $Message$
日志示例
info: Sep-30-2022 17:55:57: [ trace_id = 0063aecb17fa8ab3e43fac86b3d9f625 ] [ span_id = bd69b156bdc9443e ] Server Sent A Hello World!: undefined
log4js
日志模式
[$DateTime:date:yyyy-MM-dd'T'HH:mm:ss.SSS$] [$LogLevel$] $ThreadNamet$ - $Message$
日志示例
[2019-10-21T15:13:23.419] [INFO] default - An info message

仪表板
以下是 Node.js 日志仪表板中可用的小组件列表:
- 请求趋势
- Top 10 客户端 IP
- 字节服务速率
- 失败请求 Top 20
- 状态码统计
- 用户代理统计
- HTTP 方法
- 日志级别
- 异常

相关日志类型
-
本页内容
- 使用 winston
- 日志管理入门
- 日志模式与日志示例
- 仪表板
