Node.js लॉगिंग


177

क्या कोई पुस्तकालय है जो मुझे मेरे नोड.जेएस एप्लिकेशन में लॉगिंग को संभालने में मदद करेगा? मैं केवल इतना करना चाहता हूं कि मैं सभी लॉग को एक फाइल में लिखना चाहता हूं और मुझे कुछ विकल्पों की भी आवश्यकता है जैसे फाइल को निश्चित आकार या तारीख के बाद रोल आउट करना।


मैंने log4js im को एक फाइल में सभी विन्यास विवरणों को रखने की कोशिश की है और रखरखाव में आसानी के लिए अन्य एप्लिकेशन फाइलों में केवल विधियों का उपयोग किया है। लेकिन यह उम्मीद के मुताबिक काम नहीं करता है। यहाँ मैं करने की कोशिश कर रहा हूँ

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;

मैंने इस फाइल को अन्य फाइलों में शामिल किया है और आजमाया है

log.error ("Hello Error Message");

लेकिन यह काम नहीं कर रहा है। क्या इसमें कुछ गलत है?


1
log4js ठीक लगता है। आपने थर्ड एरर लेवल को गलत सेट किया है। यह होना चाहिए: logger.setLevel (log4js.levels.ERROR);
बोकलुसीस

जवाबों:


196

विंस्टन एक बहुत अच्छी लॉगिंग लाइब्रेरी है। आप इसका उपयोग करके किसी फ़ाइल में लॉग आउट लिख सकते हैं।

कोड कुछ इस तरह दिखेगा:

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;

तब आप इसका उपयोग कर सकते हैं जैसे:

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

logger.info('log to file');


3
मैंने लंबे समय से वाइनस्टोन का इस्तेमाल किया है। यह छोटी गाड़ी है और मैं इसे npmlog के पक्ष में खाई है।
Airportyh

8
@everyone, लगता है विंस्टन फिर से बनाए रखा जा रहा है ... github.com/flatiron/winston/network
Daithí

बस एक त्वरित टिप्पणी: रंगीन कमांड लाइन आउटपुट के लिए उपरोक्त उदाहरण में logger.cli () को कॉल करें।
डंकन

1
विंस्टन अपने विन्यास को परिभाषित करने और एक .json फ़ाइल से पढ़ने की अनुमति नहीं देता है। गरीब डिजाइन, imo।
मिनिमल

59

SJ.JS लाइटवेट लकड़हारा

मैंने कई लॉगर्स के माध्यम से देखा है, और मैं एक हल्का समाधान खोजने में सक्षम नहीं था - इसलिए मैंने एक सरल समाधान बनाने का फैसला किया जो लिथुब पर पोस्ट किया गया है।

  • फ़ाइल को सहेजता है जो उपयोगकर्ता, तिथि और स्तर द्वारा आयोजित की जाती हैं
  • तुम एक सुंदर उत्पादन देता है (हम सभी को प्यार है कि)
  • उपयोग में आसान HTML इंटरफ़ेस

मुझे आशा है कि यह आपकी मदद करेगा।

ऑनलाइन डेमो

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

लॉग्स के लिए वेब एक्सेस को सुरक्षित करें

ए

बहुत सुंदर प्रिंट करने के लिए पाठ प्रिंट!

ए

वेब का उपयोग

ए

Github

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


5
यह लाइब्रेरी अब नहीं बनी है: github.com/bluejamesbond/…
साइमन मेउलस

30

Log4js नोडज एप्लिकेशन के लिए सबसे लोकप्रिय लॉगिंग लाइब्रेरी में से एक है।

यह कई शांत सुविधाओं का समर्थन करता है:

  1. रंगीन कंसोल लॉगिंग
  2. नोड के सांत्वना के प्रतिस्थापन.लॉग कार्य (वैकल्पिक)
  3. फ़ाइल आकार के आधार पर लॉग रोलिंग के साथ, फ़ाइल परिशिष्ट
  4. SMTP, GELF, hook.io, Loggly appender
  5. मल्टीप्रोसेस ऐपेंडर (उपयोगी जब आपको श्रमिक प्रक्रियाएं मिली हैं)
  6. कनेक्ट / एक्सप्रेस सर्वर के लिए एक लकड़हारा
  7. कॉन्फ़िगर करने योग्य लॉग संदेश लेआउट / पैटर्न
  8. विभिन्न लॉग श्रेणियों के लिए अलग लॉग स्तर (अपने ऐप के कुछ हिस्सों को DEBUG के रूप में बनाएं, अन्य केवल ERRORS, आदि)

उदाहरण:

  1. स्थापना: npm install log4js

  2. कॉन्फ़िगरेशन ( ./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. उपयोग:

    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


6

"Logger.setLevel ('ERROR');" समस्या पैदा कर रहा है। मुझे समझ नहीं आता कि क्यों, लेकिन जब मैंने इसे "ALL" के अलावा किसी अन्य चीज़ पर सेट किया, तो फ़ाइल में कुछ भी प्रिंट नहीं हुआ। मैंने थोड़ी सी आस पास की और अपने कोड को संशोधित किया। यह मेरे लिए ठीक काम कर रहा है। मैंने दो फाइलें बनाईं।

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");

जब मैं "नोड logger.test.js" चलाता हूं, तो मुझे test.log फ़ाइल में केवल "ERROR संदेश" दिखाई देता है। अगर मैं "TRACE" के स्तर को बदलता हूं तो दोनों लाइनें test.log पर मुद्रित होती हैं।


2
logging.apache.org/log4j/1.2/manual.html लॉगर्स को स्तर असाइन किए जा सकते हैं। संभावित स्तरों का सेट, जो है: TRACE, DEBUG, INFO, WARN, ERROR और FATAL एक लॉगिंग अनुरोध को सक्षम करने के लिए कहा जाता है यदि उसका स्तर उसके लकड़हारे के स्तर से अधिक या उसके बराबर है। अन्यथा, अनुरोध अक्षम होने के लिए कहा गया है।
शॉन सी।

3

अधिकांश डेवलपर्स के लिए विंस्टन मजबूत विकल्प है। मैं लंबे समय से विंस्टन का उपयोग कर रहा हूं। हाल ही में मैंने पापर्ट्रिल के साथ विंस्टन का उपयोग किया जो कि एप्लिकेशन लॉगिंग को अगले स्तर पर ले जाता है।

यहाँ उनकी साइट से एक अच्छा स्क्रीनशॉट है।

यहां छवि विवरण दर्ज करें

कैसे उपयोगी है

  • आप एक ही स्थान पर विभिन्न प्रणालियों से लॉग का प्रबंधन कर सकते हैं। यह बहुत उपयोगी हो सकता है जब आपके पास दो बैकएंड संचार हो और दोनों जगह से लॉग देख सकें।

  • लोग रहते हैं। आप अपने उत्पादन सर्वर के रीयलटाइम लॉग देख सकते हैं।

  • शक्तिशाली खोज और फ़िल्टर

  • यदि आप लॉग में विशिष्ट पाठ का सामना करते हैं तो आपको ईमेल भेजने के लिए अलर्ट बना सकते हैं।

और आप अधिक पा सकते हैं http://help.papertrailapp.com/kb/how-it-works/event-viewer/

एक सरल विन्यास का उपयोग कर winston, winston-expressऔर winston-papertrailनोड मॉड्यूल।

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
}));

मुझे उम्मीद है कि यह किसी को अपने लॉग का प्रबंधन करने में मदद करता है !!


1
यह अभी भी काम करता है, हालांकि विंस्टन के उन्नयन के बाद v3 के लिए आपको एक चेतावनी मिलती है: "पैपराटील एक लेग विंस्टन ट्रांसपोर्ट है। अपग्रेड करने पर विचार करें"। वर्तमान में बकाया परिवहन के लिए एक उन्नयन है।
जिम जिमसन

2

सरल लॉगिंग के लिए 'नोडज्लॉगर' मॉड्यूल का उपयोग किया जा सकता है। इसमें लॉगिंग के तीन स्तर हैं (INFO, ERROR, DEBUG)

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

डी: डीबग, आई: इन्फो, ई: त्रुटि

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

मॉड्यूल पर पहुँचा जा सकता है: https://www.npmjs.com/package/nodejslogger


0

गौर करें कि errorLogger के चारों ओर एक आवरण है logger.trace । लेकिन लकड़हारा का स्तर ERROR है तो logger.trace करने के लिए अपने संदेश लॉग नहीं करेगा लकड़हारा के appenders।

त्रुटि logger.trace को बदलने के लिए है। ErrorLogger के शरीर में logger.error को

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.