নোড.জেএস লগিং


177

এমন কোনও লাইব্রেরি আছে যা আমার নোড.জেএস অ্যাপ্লিকেশনটিতে লগিং পরিচালনা করতে সহায়তা করবে? আমি যা করতে চাই তা হ'ল, আমি একটি ফাইলের মধ্যে সমস্ত লগ লিখতে চাই এবং নির্দিষ্ট আকার বা তারিখের পরে ফাইলটি রোল আউট করার মতো বিকল্পও আমার দরকার।


আমি লগ 4js 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
আমি দীর্ঘদিন ধরে উইনস্টন ব্যবহার করেছি। এটি বগী অর্জন করেছে এবং আমি এটিকে এনএমপ্লগের পক্ষে রেখেছি।
এয়ারপোর্টায়হ

8
@everyone, মনে উইনস্টন আবার বজায় হচ্ছে ... github.com/flatiron/winston/network
Daithí

কেবলমাত্র একটি দ্রষ্টব্য নোট: বর্ণিত কমান্ড লাইন আউটপুটটির জন্য উপরের উদাহরণে কল করুন লগার li
ডানকান

1
উইনস্টন এটির কনফিগারেশন সংজ্ঞায়িত করতে এবং জেএসসন ফাইল থেকে পড়ার অনুমতি দেয় না। দুর্বল ডিজাইন, ইমো।
মিনিমেল

59

স্ক্রিপ্ট.জেএস লাইটওয়েট লগার

আমি অনেক লগারের মধ্যে নজর রেখেছি, এবং আমি কোনও হালকা ওজনের সমাধান খুঁজে পাচ্ছিলাম না - তাই আমি গিথুবে পোস্ট করা একটি সাধারণ সমাধান করার সিদ্ধান্ত নিয়েছি।

  • ব্যবহারকারী, তারিখ এবং স্তর দ্বারা সংগঠিত ফাইল সংরক্ষণ করে
  • আপনাকে একটি সুন্দর আউটপুট দেয় (আমরা সকলেই এটি পছন্দ করি)
  • সহজেই ব্যবহারযোগ্য এইচটিএমএল ইন্টারফেস

আমি মনে করি এটা আপনার কাজে লাগবে.

অনলাইন ডেমো

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

লগগুলিতে সুরক্ষিত ওয়েব অ্যাক্সেস

একজন

কনসোলকেও প্রাইটি টেক্সট প্রিন্ট করে!

একজন

ওয়েব অ্যাক্সেস

একজন

GitHub

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


5
এই গ্রন্থাগারটি আর রক্ষণাবেক্ষণ করা হয় না: github.com/bluejamesbond/…
সাইমন

30

লড 4js নোডেজ অ্যাপ্লিকেশনগুলির জন্য সর্বাধিক জনপ্রিয় লগিং লাইব্রেরি।

এটি অনেক দুর্দান্ত বৈশিষ্ট্য সমর্থন করে:

  1. রঙিন কনসোল লগিং
  2. নোডের কনসোল.লগ ফাংশন প্রতিস্থাপন (alচ্ছিক)
  3. ফাইলের আকারের উপর ভিত্তি করে লগ রোলিং সহ ফাইল অ্যাপেন্ডার
  4. এসএমটিপি, জিইএলএফ, হুক.ইও, লগলি অ্যাপেন্ডার
  5. মাল্টিপ্রসেস অ্যাপেন্ডার (যখন আপনি কর্মী প্রক্রিয়া পেয়েছেন দরকারী)
  6. সংযোগ / এক্সপ্রেস সার্ভারগুলির জন্য একটি লগার
  7. কনফিগারযোগ্য লগ বার্তা বিন্যাস / নিদর্শন
  8. বিভিন্ন লগ বিভাগের জন্য বিভিন্ন লগ স্তরের (আপনার অ্যাপ্লিকেশনটির কিছু অংশ DEBUG হিসাবে লগ করুন, অন্যরা কেবল ত্রুটি, ইত্যাদি)

উদাহরণ:

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

আমি যখন "নোড লগার.েস্ট.জেএস" চালনা করি, আমি কেবল টেস্ট.লগ ফাইলটিতে "ইআরআরআর বার্তা" দেখতে পাই। যদি আমি স্তরটি "ট্র্যাক" তে পরিবর্তন করি তবে উভয় লাইনই টেস্ট.লগে মুদ্রিত হবে।


2
logging.apache.org/log4j/1.2/manual.html লগারে স্তর নির্ধারিত হতে পারে। সম্ভাব্য স্তরের সেট, যা হ'ল: ট্র্যাক, ডিবগ, ইনফো, সতর্কতা, তদন্ত এবং ফ্যাটাল একটি লগিংয়ের অনুরোধটি যদি এটির স্তরটি লগারের স্তরের চেয়ে বেশি বা সমান হয় তবে এটি সক্ষম করার কথা বলা হয়। অন্যথায়, অনুরোধটি অক্ষম হয়ে গেছে বলে জানা গেছে।
শন সি

3

উইনস্টন বেশিরভাগ বিকাশকারীদের পক্ষে দৃ strong় পছন্দ। আমি দীর্ঘদিন ধরে উইনস্টন ব্যবহার করে আসছি। সম্প্রতি আমি উইনস্টনকে পেপারট্রেল সহ ব্যবহার করেছি যা অ্যাপ্লিকেশনটিকে লগইন করে পরবর্তী স্তরে নিয়ে যায়।

এখানে তাদের সাইট থেকে একটি দুর্দান্ত স্ক্রিনশট দেওয়া হয়েছে।

এখানে চিত্র বর্ণনা লিখুন

কিভাবে এটি দরকারী

  • আপনি একযোগে বিভিন্ন সিস্টেম থেকে লগ পরিচালনা করতে পারেন। আপনার পক্ষে দুটি ব্যাকএন্ড যোগাযোগ করার সময় এটি খুব কার্যকর হতে পারে এবং স্থানে উভয় থেকে লগ দেখতে পাবে।

  • লগগুলি লাইভ হয়। আপনি আপনার প্রোডাকশন সার্ভারের রিয়েলটাইম লগগুলি দেখতে পারেন।

  • শক্তিশালী অনুসন্ধান এবং ফিল্টার

  • লগে কোনও নির্দিষ্ট পাঠ্যের মুখোমুখি হলে আপনি ইমেল প্রেরণের জন্য আপনি সতর্কতা তৈরি করতে পারেন।

এবং আপনি আরও জানতে পারেন 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
এটি এখনও কাজ করে, উইনস্টনকে ভি 3-তে উন্নীত করার পরে আপনি একটি সতর্কতা পেয়েছেন: "পেপারটেল হ'ল লেগ্যাসি উইনস্টন পরিবহন up বর্তমানে পরিবহনের পরিবহণের একটি আপগ্রেড রয়েছে।
জিম জিমসন

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

লক্ষ্য করুন যে ত্রুটি- লগারটি লগার.ট্রেসের চারপাশে একটি মোড়ক । কিন্তু এটির মাত্রা হল ত্রুটি তাই logger.trace তার বার্তা লগ ইন করতে হবে এটির এর appenders।

ফিক্স পরিবর্তন হয় logger.trace করার logger.error দেহের errorLogger

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.