नोडज लॉग फ़ाइल कहाँ है?


112

मुझे ऐसी जगह नहीं मिल रही है जहाँ नोडज लॉग फ़ाइल संग्रहीत है। क्योंकि मेरे नोड सर्वर में मेरा "सेगमेंटेशन फॉल्ट" है, मैं अतिरिक्त जानकारी के लिए लॉग फाइल देखना चाहता हूं ...

जवाबों:


121

कोई लॉग फ़ाइल नहीं है। प्रत्येक नोड .js "ऐप" एक अलग इकाई है। डिफ़ॉल्ट रूप से यह STDERR में त्रुटियों को लॉग करेगा और STDOUT को आउटपुट करेगा। आप इसे बदल सकते हैं जब आप इसे अपने शेल से चलाने के बजाय एक फ़ाइल में लॉग इन कर सकते हैं।

node my_app.js > my_app_log.log 2> my_app_err.log

वैकल्पिक रूप से (अनुशंसित), आप अपने आवेदन में लॉगिंग को मैन्युअल रूप से या कई लॉग लाइब्रेरी में से एक के साथ जोड़ सकते हैं:


22

हमेशा के लिए आप के लिए ब्याज की हो सकती है। यह लॉगिंग विकल्प के साथ आपकी .js-फाइल 24/7 चलेगा। सहायता पाठ से दो स्निपेट यहां दिए गए हैं:

[लंबी चलने की प्रक्रिया] हमेशा की प्रक्रिया कंसोल पर लॉग संदेशों को आउटपुट देना जारी रखेगी। पूर्व। हमेशा के लिए बाहर

तथा

[डेमॉन] हमेशा की प्रक्रिया एक डेमन के रूप में चलेगी जो लक्ष्य प्रक्रिया को पृष्ठभूमि में शुरू करेगी। यह nohup का उपयोग किए बिना दूरस्थ शुरुआती सरल नोड.js स्क्रिप्ट के लिए अत्यंत उपयोगी है। इसे -o -l, & -e के साथ शुरू करने के लिए अनुशंसित है। पूर्व। हमेशा शुरू -l हमेशा के लिए।लॉग -ओ-आउट। -गैरह। मेरी-डेमन.लॉग्स को हमेशा के लिए बंद कर दें।


4

यदि आप अपने देव में docker का उपयोग करते हैं, तो आप इसे एक अन्य शेल में कर सकते हैं: docker संलग्न चल_node_app_container_name

जो आपको STDOUT और STDERR दिखाएगा।


2

नोडज लॉग फ़ाइल के लिए आप विनस्टन और मॉर्गन का उपयोग कर सकते हैं और लॉग करने के लिए अपने कंसोल.लॉग () स्टेटमेंट यूजर विंस्टन.लॉग () या अन्य विंस्टन विधियों का उपयोग कर सकते हैं। विंस्टन और मॉर्गन के साथ काम करने के लिए आपको उन्हें एनपीएम का उपयोग करके स्थापित करना होगा। उदाहरण: npm i -S winston npm i -S मोरगन

फिर अपने प्रोजेक्ट में नाम विंस्टन के साथ एक फ़ोल्डर बनाएं और फिर उस फ़ोल्डर में एक config.js बनाएं और नीचे दिए गए इस कोड को कॉपी करें।

const appRoot = require('app-root-path');
const winston = require('winston');

// define the custom settings for each transport (file, console)
const options = {
  file: {
    level: 'info',
    filename: `${appRoot}/logs/app.log`,
    handleExceptions: true,
    json: true,
    maxsize: 5242880, // 5MB
    maxFiles: 5,
    colorize: false,
  },
  console: {
    level: 'debug',
    handleExceptions: true,
    json: false,
    colorize: true,
  },
};

// instantiate a new Winston Logger with the settings defined above
let logger;
if (process.env.logging === 'off') {
  logger = winston.createLogger({
    transports: [
      new winston.transports.File(options.file),
    ],
    exitOnError: false, // do not exit on handled exceptions
  });
} else {
  logger = winston.createLogger({
    transports: [
      new winston.transports.File(options.file),
      new winston.transports.Console(options.console),
    ],
    exitOnError: false, // do not exit on handled exceptions
  });
}

// create a stream object with a 'write' function that will be used by `morgan`
logger.stream = {
  write(message) {
    logger.info(message);
  },
};

module.exports = logger;

उपरोक्त कोड की प्रतिलिपि बनाने के बाद, विंस्टन या जहां भी आप चाहते हैं, नाम लॉग के साथ एक फ़ोल्डर बनाएं और उस लॉग फ़ोल्डर में एक फ़ाइल app.log बनाएँ। Config.js पर वापस जाएं और ${appRoot}/logs/app.logअपने द्वारा बनाए गए संबंधित एप्लिकेशन के लिए 5 वीं पंक्ति "फ़ाइलनाम:," में पथ सेट करें ।

इसके बाद अपने index.js पर जाएं और इसमें निम्नलिखित कोड शामिल करें।

const morgan = require('morgan');
const winston = require('./winston/config');
const express = require('express');
const app = express();
app.use(morgan('combined', { stream: winston.stream }));

winston.info('You have successfully started working with winston and morgan');
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.