Log Node.js

177

Apakah ada perpustakaan yang akan membantu saya menangani login di aplikasi Node.Js saya? Yang ingin saya lakukan adalah, saya ingin menulis semua log ke dalam File dan juga saya perlu opsi seperti meluncurkan file setelah ukuran atau tanggal tertentu.


Saya telah memasukkan log4js im mencoba menyimpan semua detail konfigurasi dalam satu file dan hanya menggunakan metode dalam file aplikasi lain untuk kemudahan pemeliharaan. Tapi itu tidak berfungsi seperti yang diharapkan. Inilah yang saya coba lakukan

var log4js = require('log4js'); 
log4js.clearAppenders()
log4js.loadAppender('file');
log4js.addAppender(log4js.appenders.file('test.log'), 'test');
var logger = log4js.getLogger('test');
logger.setLevel('ERROR');


var traceLogger = function (message) {
        logger.trace('message');
    };

var errorLogger = function (message) {
        logger.trace(message);
    };


exports.trace = traceLogger;
exports.error = errorLogger;

Saya telah memasukkan file ini ke file lain dan mencoba

log.error ("Hello Error Message");

Tapi itu tidak berhasil. Apakah ada yang salah dalam hal ini?

syv
sumber
1
log4js sepertinya ok. Anda telah salah mengatur tingkat kesalahan. seharusnya: logger.setLevel (log4js.levels.ERROR);
Boklucius

Jawaban:

196

Winston adalah perpustakaan logging yang cukup bagus. Anda dapat menulis log ke file yang menggunakannya.

Kode akan terlihat seperti:

var winston = require('winston');

var logger = new (winston.Logger)({
  transports: [
    new (winston.transports.Console)({ json: false, timestamp: true }),
    new winston.transports.File({ filename: __dirname + '/debug.log', json: false })
  ],
  exceptionHandlers: [
    new (winston.transports.Console)({ json: false, timestamp: true }),
    new winston.transports.File({ filename: __dirname + '/exceptions.log', json: false })
  ],
  exitOnError: false
});

module.exports = logger;

Anda kemudian dapat menggunakan ini seperti:

var logger = require('./log');

logger.info('log to file');
Charlie Key
sumber
3
Saya telah menggunakan winston untuk waktu yang lama. Ia mendapatkan buggy dan saya telah membuangnya demi npmlog.
airportyh
8
@everyone, sepertinya winston sedang dirawat lagi ... github.com/flatiron/winston/network
Daithí
Hanya catatan singkat: panggil logger.cli () dalam contoh di atas untuk output baris perintah berwarna.
Duncan
1
Winston tidak mengizinkan konfigurasinya ditentukan dan dibaca dari file .json. Desain yang buruk, imo.
minimal
59

Scribe.JS Logger Ringan

Saya telah melihat banyak penebang, dan saya tidak dapat menemukan solusi yang ringan - jadi saya memutuskan untuk membuat solusi sederhana yang diposting di github.

  • Menyimpan file yang diatur oleh pengguna, tanggal, dan level
  • Memberi Anda hasil yang cantik (kita semua menyukainya)
  • Antarmuka HTML yang mudah digunakan

Saya harap ini membantu Anda.

Demo online

http://bluejamesbond.github.io/Scribe.js/

Akses Web Aman ke Log

SEBUAH

Mencetak Teks Cantik ke Konsol Juga!

SEBUAH

Akses web

SEBUAH

Github

https://github.com/bluejamesbond/Scribe.js

Mathew Kurian
sumber
5
perpustakaan ini tidak lagi dipertahankan: github.com/bluejamesbond/…
Simon Meusel
30

Log4js adalah salah satu perpustakaan logging paling populer untuk aplikasi nodejs.

Ini mendukung banyak fitur keren:

  1. Pencatatan konsol berwarna
  2. Penggantian fungsi console.log node (opsional)
  3. File appender, dengan rolling log berdasarkan ukuran file
  4. SMTP, GELF, hook.io, appg logend
  5. Appendor multiproses (berguna saat Anda memiliki proses pekerja)
  6. Logger untuk server koneksi / ekspres
  7. Tata letak / pola pesan log yang dapat dikonfigurasi
  8. Level log yang berbeda untuk kategori log yang berbeda (jadikan beberapa bagian dari log aplikasi Anda sebagai DEBUG, yang lain hanya KESALAHAN, dll.)

Contoh:

  1. Instalasi: npm install log4js

  2. Konfigurasi ( ./config/log4js.json):

    {"appenders": [
        {
            "type": "console",
            "layout": {
                "type": "pattern",
                "pattern": "%m"
            },
            "category": "app"
        },{
            "category": "test-file-appender",
            "type": "file",
            "filename": "log_file.log",
            "maxLogSize": 10240,
            "backups": 3,
            "layout": {
                "type": "pattern",
                "pattern": "%d{dd/MM hh:mm} %-5p %m"
            }
        }
    ],
    "replaceConsole": true }
  3. Pemakaian:

    var log4js = require( "log4js" );
    log4js.configure( "./config/log4js.json" );
    var logger = log4js.getLogger( "test-file-appender" );
    // log4js.getLogger("app") will return logger that prints log to the console
    logger.debug("Hello log4js");// store log in file
Tho
sumber
6

The "logger.setLevel ('ERROR');" menyebabkan masalah. Saya tidak mengerti mengapa, tetapi ketika saya mengaturnya selain "SEMUA", tidak ada yang dicetak dalam file. Saya menyodok sedikit dan memodifikasi kode Anda. Ini bekerja dengan baik untuk saya. Saya membuat dua file.

logger.js

var log4js = require('log4js');
log4js.clearAppenders()
log4js.loadAppender('file');
log4js.addAppender(log4js.appenders.file('test.log'), 'test');
var logger = log4js.getLogger('test');
logger.setLevel('ERROR');

var getLogger = function() {
   return logger;
};

exports.logger = getLogger();

logger.test.js

var logger = require('./logger.js')

var log = logger.logger;

log.error("ERROR message");
log.trace("TRACE message");

Ketika saya menjalankan "node logger.test.js", saya hanya melihat "pesan ERROR" di file test.log. Jika saya mengubah level ke "TRACE" maka kedua baris dicetak pada test.log.

Alexander Jeyaraj
sumber
2
logging.apache.org/log4j/1.2/manual.html Penebang dapat diberi level. Himpunan tingkat yang memungkinkan, yaitu: TRACE, DEBUG, INFO, WARN, ERROR dan FATAL Permintaan logging dikatakan diaktifkan jika levelnya lebih tinggi atau sama dengan level logger-nya. Jika tidak, permintaan tersebut dikatakan dinonaktifkan.
Shawn C.
3

Winston adalah pilihan kuat bagi sebagian besar pengembang. Saya telah menggunakan winston sejak lama. Baru-baru ini saya menggunakan winston with dengan papertrail yang membawa aplikasi logging ke level selanjutnya.

Ini screenshot yang bagus dari situs mereka.

masukkan deskripsi gambar di sini

Bagaimana ini bermanfaat

  • Anda dapat mengelola log dari sistem yang berbeda di satu tempat. ini bisa sangat berguna ketika Anda memiliki dua backend berkomunikasi dan dapat melihat log dari keduanya di tempat.

  • Log hidup. Anda dapat melihat log waktu nyata dari server produksi Anda.

  • Pencarian dan filter yang kuat

  • Anda dapat membuat pemberitahuan untuk mengirimi Anda email jika menemui teks tertentu dalam log.

dan Anda dapat menemukan lebih banyak http://help.papertrailapp.com/kb/how-it-works/event-viewer/

Konfigurasi sederhana menggunakan winston, winston-expressdan winston-papertrailmodul simpul.

import winston from 'winston';
import expressWinston from 'express-winston';
//
// Requiring `winston-papertrail` will expose
// `winston.transports.Papertrail`
//
require('winston-papertrail').Papertrail;
// create winston transport for Papertrail
var winstonPapertrail = new winston.transports.Papertrail({
  host: 'logsX.papertrailapp.com',
  port: XXXXX
});
app.use(expressWinston.logger({
  transports: [winstonPapertrail],
  meta: true, // optional: control whether you want to log the meta data about the request (default to true)
  msg: "HTTP {{req.method}} {{req.url}}", // optional: customize the default logging message. E.g. "{{res.statusCode}} {{req.method}} {{res.responseTime}}ms {{req.url}}"
  expressFormat: true, // Use the default Express/morgan request formatting. Enabling this will override any msg if true. Will only output colors with colorize set to true
  colorize: true, // Color the text and status code, using the Express/morgan color palette (text: gray, status: default green, 3XX cyan, 4XX yellow, 5XX red).
  ignoreRoute: function (req, res) { return false; } // optional: allows to skip some log messages based on request and/or response
}));

Saya harap ini membantu seseorang mengelola log mereka !!

vinesh
sumber
1
Ini masih berfungsi, namun setelah peningkatan winston ke v3 Anda mendapat peringatan: "Papertrail adalah transportasi winston yang lama. Pertimbangkan untuk meningkatkan". Ada peningkatan untuk transportasi yang saat ini beredar.
Jim Jimson
2

Modul 'nodejslogger' dapat digunakan untuk pencatatan sederhana. Ini memiliki tiga level logging (INFO, ERROR, DEBUG)

var logger = require('nodejslogger')
logger.init({"file":"output-file", "mode":"DIE"})

D: Debug, I: Info, E: Kesalahan

logger.debug("Debug logs")
logger.info("Info logs")
logger.error("Error logs")

Modul ini dapat diakses di: https://www.npmjs.com/package/nodejslogger

rohit kamal
sumber
0

Perhatikan bahwa errorLogger adalah pembungkus di sekitar logger.trace . Tetapi level logger ERROR sehingga logger.trace tidak akan mencatat pesannya ke logger .

Cara mengatasinya adalah mengubah logger.trace ke logger.error di badan errorLogger .

Roland Maio
sumber