Rumah  >  Artikel  >  hujung hadapan web  >  Pengelogan API Node.js Lanjutan dengan Winston dan Morgan

Pengelogan API Node.js Lanjutan dengan Winston dan Morgan

WBOY
WBOYasal
2024-07-20 07:37:29661semak imbas

Advanced Node.js API Logging with Winston and Morgan

Pengelogan ialah bahagian penting dalam mana-mana aplikasi, memberikan cerapan tentang gelagat aplikasi, membantu isu nyahpepijat dan memantau prestasi. Dalam API Node.js, pengelogan lanjutan boleh dicapai menggunakan perpustakaan seperti Winston dan Morgan. Artikel ini akan membimbing anda melalui penyediaan dan penggunaan Winston dan Morgan untuk pengelogan lanjutan dalam API Node.js.

Mengapa Pengelogan Lanjutan Diperlukan
Pengelogan lanjutan adalah penting untuk beberapa sebab:

  • Penyahpepijatan dan Penyelesaian Masalah: Log menyediakan sejarah terperinci peristiwa aplikasi, yang tidak ternilai apabila mendiagnosis isu. Mereka membantu mengenal pasti punca ralat dan memahami urutan tindakan yang membawa kepada masalah.

  • Pemantauan dan Penyelenggaraan: Pemantauan log yang berterusan membolehkan pembangun menjejaki kesihatan dan prestasi aplikasi. Dengan menganalisis log, anda boleh mengesan anomali, kesesakan prestasi dan potensi isu sebelum menjadi kritikal.

  • Pengaudit dan Pematuhan: Untuk kebanyakan aplikasi, terutamanya yang mengendalikan data sensitif, mengekalkan log terperinci adalah keperluan pematuhan. Log menyediakan rekod tindakan pengguna dan perubahan sistem, yang boleh menjadi kritikal untuk audit dan pematuhan kawal selia.

  • Keselamatan: Mengelog peristiwa berkaitan keselamatan, seperti percubaan log masuk yang gagal, akses tanpa kebenaran dan aktiviti yang mencurigakan, adalah penting untuk mengesan dan bertindak balas terhadap ancaman keselamatan. Pengelogan lanjutan membantu dalam mengekalkan persekitaran aplikasi yang selamat.

Jadual Kandungan

  1. Pengenalan kepada Winston dan Morgan
  2. Menyediakan Projek Node.js
  3. Memasang Winston dan Morgan
  4. Mengkonfigurasi Winston untuk Pengelogan Lanjutan
  5. Mengintegrasikan Morgan untuk Pengelogan Permintaan HTTP
  6. Menggabungkan Winston dan Morgan
  7. Menyesuaikan Format Pengelogan
  8. Melog masuk ke Pengangkutan Berbeza
  9. Ralat Pengendalian dan Pengelogan
  10. Kesimpulan

1.Pengenalan kepada Winston dan Morgan
Winston ialah perpustakaan pengelogan yang serba boleh dan mudah digunakan untuk Node.js. Ia menyokong berbilang pengangkutan untuk mesej log, bermakna anda boleh log ke lokasi yang berbeza (konsol, fail, pelayan jauh, dll.) dengan pelbagai format dan tahap.

Morgan ialah perisian tengah logger permintaan HTTP untuk Node.js. Ia memudahkan pengelogan permintaan HTTP dalam format yang dipratentukan, yang boleh menjadi sangat berguna untuk menjejak permintaan dan respons yang masuk dalam API.

2.Menyediakan Projek Node.js
Mula-mula, buat projek Node.js baharu jika anda belum memilikinya:

mkdir node-api-logging
cd node-api-logging
npm init -y

3.Memasang Winston dan Morgan
Pasang Winston dan Morgan bersama Express (untuk menyediakan API asas):

npm install express winston morgan

4.Mengkonfigurasi Winston untuk Pengelogan Lanjutan
Cipta fail logger.js untuk mengkonfigurasi Winston:

// logger.js
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, printf, errors } = format;

const customFormat = printf(({ level, message, timestamp, stack }) => {
  return `${timestamp} ${level}: ${stack || message}`;
});

const logger = createLogger({
  level: 'info',
  format: combine(
    timestamp(),
    errors({ stack: true }),
    customFormat
  ),
  transports: [
    new transports.Console(),
    new transports.File({ filename: 'logs/error.log', level: 'error' }),
    new transports.File({ filename: 'logs/combined.log' })
  ]
});

module.exports = logger;

5. Mengintegrasikan Morgan untuk Pengelogan Permintaan HTTP
Cipta fail middleware/logger.js untuk menyepadukan Morgan dengan Winston:

// middleware/logger.js
const morgan = require('morgan');
const logger = require('../logger');

const stream = {
  write: (message) => logger.info(message.trim())
};

const morganMiddleware = morgan('combined', { stream });

module.exports = morganMiddleware;

6. Menggabungkan Winston dan Morgan
Integrasikan kedua-dua Winston dan Morgan ke dalam aplikasi Express anda:

// app.js
const express = require('express');
const logger = require('./logger');
const morganMiddleware = require('./middleware/logger');

const app = express();

// Use Morgan middleware for HTTP request logging
app.use(morganMiddleware);

// Example route
app.get('/', (req, res) => {
  logger.info('Hello world endpoint was called');
  res.send('Hello, world!');
});

// Error handling middleware
app.use((err, req, res, next) => {
  logger.error(err.message, { stack: err.stack });
  res.status(500).send('Something went wrong!');
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  logger.info(`Server is running on port ${PORT}`);
});

7.Menyesuaikan Format Pengelogan
Anda boleh menyesuaikan format pengelogan dalam Winston dan Morgan. Sebagai contoh, anda mungkin ingin melog butiran permintaan tambahan seperti pengepala, parameter pertanyaan atau masa respons.

8.Melog ke Pengangkutan Berbeza
Winston menyokong pelbagai pengangkutan. Anda boleh log masuk ke destinasi berbeza berdasarkan keterukan mesej. Contohnya, anda mungkin mahu menghantar log ralat ke pelayan pengelogan jauh atau perkhidmatan pihak ketiga seperti Loggly atau Papertrail.

9. Ralat Pengendalian dan Pembalakan
Pengendalian ralat dan pembalakan yang betul adalah penting untuk mengenal pasti dan menyelesaikan isu. Pastikan ralat anda mengendalikan perisian tengah mencatat maklumat ralat terperinci menggunakan Winston.

10. Kesimpulan
Dengan menggabungkan Winston dan Morgan, anda boleh mencapai pengelogan lanjutan dalam API Node.js anda. Winston menyediakan rangka kerja yang teguh untuk mengelog peristiwa peringkat aplikasi, manakala Morgan memudahkan pengelogan permintaan HTTP. Bersama-sama, mereka memberi anda penyelesaian pengelogan komprehensif yang meningkatkan keupayaan anda untuk memantau dan nyahpepijat aplikasi anda.

Ikhtisar Kod Akhir
Berikut ialah imbasan pantas fail dan kandungannya:

  • logger.js: Mengkonfigurasi Winston dengan pemformatan dan pengangkutan tersuai.
  • middleware/logger.js: Mengintegrasikan Morgan dengan Winston.
  • app.js: Sediakan aplikasi Express, menyepadukan kedua-dua Winston dan Morgan. Dengan persediaan ini, anda boleh log dan memantau API Node.js anda dengan berkesan, menjadikannya lebih mudah untuk diselenggara dan nyahpepijat.

Atas ialah kandungan terperinci Pengelogan API Node.js Lanjutan dengan Winston dan Morgan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn