मैं अपने फेडोरा सिस्टम पर मेरी /var/log निर्देशिका में लॉग इन करने के लिए विंस्टन का उपयोग करने का एक तरीका खोजने के लिए 10 घंटे से अधिक समय से कोशिश कर रहा हूं लेकिन यह काम नहीं करता है।

मैंने केवल विंस्टन का परीक्षण करने के लिए एक्सप्रेस का उपयोग करके एक प्रोजेक्ट बनाया और जब मैंने अपनी प्रोजेक्ट निर्देशिका पर लॉगिंग करने का प्रयास किया तो यह ठीक काम करता है लेकिन जब '~' या '/' से शुरू होने पर कहीं भी लॉग इन करने की बात आती है तो यह फ़ाइल या लॉग नहीं बनाता है और कोई त्रुटि नहीं होती है या अपवाद फेंक दिया गया है, कृपया किसी भी मदद की सराहना की जाएगी।

मैं कई मंचों से गुजर चुका हूं और पता चला है कि यह एक नियमित समस्या है लेकिन मैंने एक वर्तमान नहीं देखा है, इसलिए मैं जानना चाहता हूं कि कोई समाधान है या नहीं।

0
CodingWithSam 21 जुलाई 2018, 00:40
विंस्टन त्रुटियों को नहीं फेंकता है, यह emitउन्हें है, इसलिए आपको .on('error', console.error) के साथ अपनी त्रुटियां प्राप्त करने में सक्षम होना चाहिए। और ~ बैश जैसे कुछ टर्मिनलों के लिए विशिष्ट मान है। fs को इसके बारे में पता नहीं है।
 – 
Lucas S.
21 जुलाई 2018, 00:58
@ लुकास। धन्यवाद, मैं यह देखने के लिए इसका उपयोग करने का प्रयास करूंगा कि मुझे डीबग करने का तरीका जानने के लिए कोई महत्वपूर्ण त्रुटि मिल सकती है या नहीं।
 – 
CodingWithSam
23 जुलाई 2018, 15:43
@ लुकास। मैं .on('error', console.error) को कैसे लागू करूं? मेरे पास इस तरह कुछ है var logger = createLogger({}).on('error', console.error);
 – 
CodingWithSam
23 जुलाई 2018, 16:44
मुझे यकीन नहीं है कि .on लॉगर इंस्टेंस लौटाता है, तो आपको इसे अलग-अलग लाइनों पर करना चाहिए: var logger = winston.createLogger({}); logger.on('error', err => /* do something */);
 – 
Lucas S.
23 जुलाई 2018, 17:14

2 जवाब

कैसे काम करें Winston लकड़हारा अगर हम लॉग लिखने के लिए एक फ़ाइल पथ प्रदान करते हैं, तो यह उस फ़ाइल को उल्लिखित निर्देशिका में खोजेगा यदि मौजूद नहीं है तो उसी नाम से बनाएगा।

लेकिन यूनिक्स सिस्टम में ~/ डायरेक्टरी के प्रकार में कुछ लिखने के लिए अनुमति की आवश्यकता होती है। यदि आपका कंसोल जिसने त्रुटि फेंक दी है, तो आपको वह त्रुटि स्टैक नीचे की तरह निश्चित रूप से मिल जाएगा:

Error: EACCES: permission denied, open \'/var/log/your.log\

समाधान यह है: आप /var/log/your.log फ़ाइल में फ़ाइल बना सकते हैं और फिर लिखने की अनुमति दे सकते हैं। sudo chmod a+w /var/log/your.log.

हाँ यह आपकी परियोजना निर्देशिका में ठीक काम करेगा यहाँ किसी भी लेखन की अनुमति है, इसीलिए।

1
Osman Goni Nahid 21 जुलाई 2018, 01:00
धन्यवाद उस्मान, मैंने इसे एक दृष्टिकोण के रूप में सोचा लेकिन यह प्रोजेक्ट फ़ाइल को स्वचालित रूप से बनाने में सक्षम होना चाहिए यदि यह अस्तित्व में नहीं है, तो फ़ाइलों को बनाने का मैन्युअल दृष्टिकोण इरादा नहीं है
 – 
CodingWithSam
23 जुलाई 2018, 15:46
हाँ, मुझे पता है कि यह इरादा नहीं है, उस उपयोगकर्ता के लिए डीआईआर या विशिष्ट फ़ोल्डर में अनुमति जिसे आप सक्षम कर सकते हैं। लेकिन मैंने आपको इसका कारण और उपाय बताया। यदि आप मशीन में अनुमति की चीजों को बदलने में सक्षम हैं तो यह बेहतर है।
 – 
Osman Goni Nahid
23 जुलाई 2018, 15:54
धन्यवाद, मैं आपके कथन और सलाह को समझता हूं लेकिन यह वह दिशा नहीं है जिसके बारे में हम सोच रहे हैं क्योंकि हम एक फाइल नहीं बनाना चाहते हैं और हर उस सिस्टम पर इसकी पहुंच है जहां ऐप तैनात किया जा रहा है, हम लेखन पर विचार कर रहे हैं अस्थायी फ़ोल्डर या आसानी से सुलभ सुसंगत स्थान पर और मुझे अभी तक यह देखने का तरीका नहीं मिला है कि इसे लिखने से क्या रोकता है यह सुनिश्चित करने के लिए कि इसकी पहुंच की कमी है और इससे मैं जान सकता हूं कि कहां जाना है
 – 
CodingWithSam
23 जुलाई 2018, 17:23

मैं इस निष्कर्ष पर पहुंचा कि स्टैकओवरफ्लो उपयोगकर्ता उस्मान गोनी नाहिद ने उल्लेख किया/सलाह दी कि मैन्युअल रूप से एक फ़ाइल बनाने का सबसे अच्छा तरीका है, उस फ़ाइल की अनुमतियों को एक्सेस करने के लिए बदलें और फिर इसे कोड में लिखें क्योंकि अगर विंस्टन के पास किसी फ़ोल्डर की अनुमति नहीं है, तो यह सिर्फ दूसरी प्रक्रिया चलाता है और फ़ाइल को बनाता या लिखता नहीं है, मेरे मामले में मैं एक बेहतर सुलभ स्थान के लिए गया था जहां पढ़ना और लिखना सुलभ था, इसलिए मैं अभी भी अपना स्वचालित बनाए रख सकता था फ़ाइल का निर्माण क्योंकि वह मेरी परियोजना में महत्वपूर्ण था।

आपकी सलाह के लिए लुकास एस और उस्मान गोनी नाहिद धन्यवाद !!

0
CodingWithSam 23 जुलाई 2018, 22:42