jsrosetta

Cơ bản

Logging

console.log kèm timestamp trong Node.js so với log/log-slog (Go), crate tracing (Rust), Foundation (Swift) và System.Logger (Java).

Phiên bản tối thiểu
Node.js ≥ 12.20Go ≥ 1.21Rust ≥ 1.65Swift ≥ 4.0Java ≥ 25
Đã chạy thử trên
Node.js 24.12.0Go 1.27.1Rust 1.98.1Swift 6.2.4Java 25.0.4.1

Code Node.js là ES module: lưu file .mjs hoặc đặt "type": "module" trong package.json.

Node.js không có logger dựng sẵn: muốn có timestamp hay output dạng JSON thì tự ghép bằng console.log. Go có package log (tự thêm ngày giờ vào mỗi dòng), và từ Go 1.21 có thêm log/slog cho logging có cấu trúc, theo level. Rust không có logger nào trong std — phải dùng crate ngoài (tracing). Swift cũng không có logger có cấu trúc dựng sẵn (Apple có os.Logger nhưng ghi vào system log, Apple-only, không ra stdout). Java lại có sẵn System.Logger trong java.base từ Java 9.

Log kèm timestamp và log dạng JSON

console.log((new Date()).toISOString(), 'hello world')
 
// output có cấu trúc (JSON) — Node.js không có logger cấu trúc dựng sẵn, nên
// log một object thường ra dạng JSON là cách làm baseline phổ biến
console.log(JSON.stringify({ level: 'info', msg: 'hello world', time: new Date().toISOString() }))
# Node.js
2026-09-27T12:55:39.470Z hello world
{"level":"info","msg":"hello world","time":"2026-09-27T12:55:39.471Z"}
 
# Go
2026/09/27 19:55:40 hello world
2026/09/27 19:55:40 INFO hello world count=1
 
# Rust
2026-09-27T18:03:27.401099Z  INFO logging: hello world
{"timestamp":"2026-09-27T18:03:27.401360Z","level":"INFO","fields":{"message":"hello world","count":1},"target":"logging"}
 
# Swift
2026-09-27T18:04:28Z hello world
{"level":"info","msg":"hello world","time":"2026-09-27T18:04:28Z"}
 
# Java
Sep 28, 2026 1:05:00 AM Main main
INFO: hello world
{"level":"info","msg":"hello world","time":"2026-09-27T18:05:00.428159Z"}

(timestamp sẽ khác nhau mỗi lần chạy)

Tham khảo: github.com/miguelmota/golang-for-nodejs-developers#logging