Rumah >hujung hadapan web >tutorial js >Log Amalan Terbaik Untuk Apl Node.js Anda

Log Amalan Terbaik Untuk Apl Node.js Anda

WBOY
WBOYasal
2024-08-10 06:38:22676semak imbas

Logging Best Practices For Your Node.js App

Sebagai pembangun Node.js, pengelogan adalah segala-galanya apabila ia melibatkan penyahpepijatan, pemantauan dan penyelenggaraan aplikasi anda. Tetapi adakah anda menggunakan amalan terbaik pembalakan? Mari terokai beberapa teknik pengelogan yang boleh membawa apl Node.js anda ke peringkat seterusnya.

Untuk mengetahui lebih lanjut, anda boleh menyemak catatan blog penuh.

1. Winston: Pisau Pembalakan Tentera Swiss

? Alat: Winston
? Penerangan: Pustaka pengelogan serba boleh untuk Node.js
? Ciri Utama:

  • Berbilang pilihan pengangkutan (konsol, fail, pangkalan data)
  • Tahap log boleh disesuaikan
  • Menyokong pengelogan dalam pelbagai format (JSON, teks biasa)
javascriptCopyconst winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

2. Morgan: HTTP Request Logger Middleware

? Alat: Morgan
? Perihalan: Memudahkan pengelogan permintaan HTTP dalam Express.js
? Ciri Utama:

  • Format pengelogan yang dipratakrifkan
  • Sokongan token tersuai
  • Penyatuan mudah dengan Express.js
javascriptCopyconst express = require('express');
const morgan = require('morgan');

const app = express();
app.use(morgan('combined'));

3. Bunyan: Pengelogan JSON untuk Node.js

? Alat: Bunyan
? Penerangan: Pengelogan JSON berstruktur untuk aplikasi Node.js
? Ciri Utama:

  • Format log JSON secara lalai
  • Menyokong pembalak kanak-kanak
  • CLI terbina dalam untuk melihat log
javascriptCopyconst bunyan = require('bunyan');
const log = bunyan.createLogger({name: "myapp"});

log.info("Hi");
log.warn({lang: 'fr'}, "Au revoir");

4. Pino: Logger Node.js Super Pantas

? Alat: Pino
? Perihalan: Pengelogan overhed rendah dengan output JSON
? Ciri Utama:

  • Prestasi yang sangat pantas
  • Putaran log automatik
  • Menyokong pembalak kanak-kanak
javascriptCopyconst pino = require('pino');
const logger = pino();

logger.info('hello world');
logger.error('this is at error level');

5. nyahpepijat: Utiliti Penyahpepijatan Kecil

? Alat: nyahpepijat
? Penerangan: Utiliti penyahpepijatan kecil untuk Node.js
? Ciri Utama:

  • Ringan dan mudah digunakan
  • Penyahpepijatan terpilih dengan ruang nama
  • Sokongan penyemak imbas
javascriptCopyconst debug = require('debug')('http');

debug('booting %o', name);

6. Log4js: Pengelogan Fleksibel untuk JavaScript

? Alat: Log4js
? Penerangan: Penukaran rangka kerja log4j kepada JavaScript
? Ciri Utama:

  • Tahap pengelogan hierarki
  • Pelampir output berbilang
  • Susun atur boleh dikonfigurasikan
javascriptCopyconst log4js = require("log4js");
log4js.configure({
  appenders: { cheese: { type: "file", filename: "cheese.log" } },
  categories: { default: { appenders: ["cheese"], level: "error" } }
});

const logger = log4js.getLogger("cheese");
logger.error("Cheese is too ripe!");

7. Elasticsearch, Logstash dan Kibana (ELK Stack)

? Alat: Tindanan ELK
? Penerangan: Gabungan hebat untuk pengurusan log dan analisis
? Ciri Utama:

  • Pembalakan berpusat
  • Analisis log masa nyata
  • Visualisasi dan papan pemuka
javascriptCopyconst winston = require('winston');
const Elasticsearch = require('winston-elasticsearch');

const esTransportOpts = {
  level: 'info',
  clientOpts: { node: 'http://localhost:9200' }
};
const logger = winston.createLogger({
  transports: [
    new Elasticsearch(esTransportOpts)
  ]
});

8. Sentry: Penjejakan Ralat dan Pemantauan Prestasi

? Alat: Sentry
? Penerangan: Penjejakan ralat masa nyata dan pemantauan prestasi
? Ciri Utama:

  • Ralat automatik menangkap
  • Penjejakan keluaran
  • Pemantauan prestasi
javascriptCopyconst Sentry = require("@sentry/node");

Sentry.init({ dsn: "https://examplePublicKey@o0.ingest.sentry.io/0" });

try {
  someFunction();
} catch (e) {
  Sentry.captureException(e);
}

9. Peninggalan Baharu: Pemantauan Prestasi Aplikasi

? Alat: Peninggalan Baharu
? Penerangan: Pemantauan prestasi aplikasi yang komprehensif
? Ciri Utama:

  • Metrik prestasi masa nyata
  • Analisis ralat
  • Peralatan tersuai
javascriptCopyconst newrelic = require('newrelic');

newrelic.setTransactionName('myCustomTransaction');
// Your application code here

10. Loggly: Pengurusan Log berasaskan Awan

? Alat: Loggly
? Penerangan: Perkhidmatan pengurusan log dan analisis berasaskan awan
? Ciri Utama:

  • Pengurusan log berpusat
  • Carian dan analisis log masa nyata
  • Papan pemuka dan makluman tersuai
javascriptCopyconst winston = require('winston');
const { Loggly } = require('winston-loggly-bulk');

winston.add(new Loggly({
    token: "YOUR-TOKEN",
    subdomain: "YOUR-SUBDOMAIN",
    tags: ["Winston-NodeJS"],
    json: true
}));

winston.log('info', "Hello World daripada Node.js!");

Petua Bonus: Pembalakan Berstruktur

Tidak kira alat yang anda pilih, melaksanakan pengelogan berstruktur boleh meningkatkan keupayaan analisis log anda dengan ketara:

javascriptCopylogger.info({
  event: 'user_login',
  userId: user.id,
  timestamp: new Date().toISOString(),
  ipAddress: req.ip
});

Dengan menggunakan alatan dan amalan tambahan ini, anda akan mempunyai strategi pengelogan komprehensif yang merangkumi segala-galanya daripada penyahpepijatan asas kepada pemantauan prestasi aplikasi lanjutan. Ingat, kunci kepada pengelogan yang berkesan ialah memilih alatan yang sesuai untuk keperluan khusus anda dan menerapkan amalan terbaik secara konsisten di seluruh pangkalan kod anda.

Jika anda memerlukan bantuan menyahpepijat apl web anda, lihat https://alerty.ai untuk mengetahui lebih lanjut tentang pemantauan bahagian hadapan yang mudah.

Selamat mengelog dan semoga apl Node.js anda berjalan lancar! ??

Atas ialah kandungan terperinci Log Amalan Terbaik Untuk Apl Node.js Anda. 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