2016-05-22 4 views
6

मेरे पास एक नोड मोंगो ऐप है। अब मैं आवेदन में होने वाली कुछ विशिष्ट क्रूड घटनाओं के लिए ऑडिट ट्रेल दिखाना चाहता हूं।मोंडोडीबी नोड ऐप में ऑडिटिंग को सक्षम करने और सभी सीआरयूडी परिचालनों को लॉग करने के लिए कैसे करें?

इस समस्या को हल करने के लिए सबसे अच्छा तरीका क्या होगा?

मैंने एक नया संग्रह और सेवा बनाने पर विचार किया है जिसे ऑपरेशन लॉगिंग के लिए नोड ऐप में प्रत्येक विधि में बुलाया जाएगा।

उत्तर

0

एक विशेष स्कीमा का उपयोग करना बेहतर है जिसमें आप सभी कार्यों को विशेष कार्यों के लिए स्टोर करना चाहते हैं।

// schema 
var schema = new Schema({ 
    actionType: {type: String, require: true}, 
    userId: { type: Schema.Types.ObjectId, required: true }, 
    userType: { type: String, required: true }, 
    message: { type: String, required: true }, 
    createdAt: { type: Date, default: Date.now }, 

}, options); 

यहाँ आप

क्या कार्रवाई ले लिया गया है के साथ अपने गतिविधि लॉग प्रवेश कर सकते हैं। कौन सा उपयोगकर्ता। और वह संदेश जिसे आप उस क्रिया के साथ स्टोर करना चाहते हैं आदि

2

आप 'ट्रिगरिंग' के बारे में बात कर रहे हैं। लेकिन दुर्भाग्यवश "मोंगोडीबी ट्रिगर्स का समर्थन नहीं करता है"।

अपनी समस्या को हल करने के लिए बस एक और संग्रह बनाएं और उस संग्रह में लॉग जानकारी संग्रहीत करें।

संदर्भ:

1

आप आप अनुप्रयोग के लिए एक मध्यस्थ के जोड़ सकते हैं जो कुछ विशिष्ट आईडी (शायद uuid)

साथ प्रत्येक अनुरोध करने के लिए एक bunyan बच्चे लकड़हारा कहते हैं

अद्वितीय आईडी के साथ प्रत्येक अनुरोध को लॉगर संलग्न करने के लिए यहां कुछ नमूना कोड है, जब भी आप इस लकड़हारा का उपयोग कर कुछ प्रिंट होगा, इस UUID भी हो जाता है ताकि आप इस आईडी

var bunyan = require('bunyan'); 
var uuid = require('uuid'); 
var logger = bunyan.createLogger({name: 'some name'}); 
function loadlogger(req, res, next) { 
    req.log = logger.child({request_id: uuid.v4()}); 
    next() 
} 
app.use(loadLogger); 

का उपयोग कर प्रत्येक अनुरोध का पता लगा सकते प्रिंट की जाएगी और आप लॉग जब कभी आप का पालन के रूप में चाहते हैं कर सकते हैं

req.log.info({keys: values}, "message"); 
req.log.warn({keys: values}, "message"); 
req.log.error({keys: values}, "message"); 

आप पूर्ण दस्तावेज bunyan logger

1

यदि आप mongoose मॉड्यूल का उपयोग कर रहे हैं तो सभी क्वेरी लॉगिंग करने के लिए विधि है। यह कंसोल पर सभी प्रश्नों को लॉग करेगा।

mongoose.set('debug', true); 

आप एक फ़ाइल में लॉग इन करना चाहते हैं तो इस विधि

mongoose.set('debug', function (coll, method, query, doc [, options]) { 
//do your thing 
}); 
के लिए कॉलबैक का उपयोग
संबंधित मुद्दे

 संबंधित मुद्दे