Winston: إذا لم يكن دليل السجلات موجودًا ، فسيتم طرح ex بدلاً من إنشاء دليل

تم إنشاؤها على ١١ مارس ٢٠١٥  ·  9تعليقات  ·  مصدر: winstonjs/winston

var transports = [];
transports.push(new winston.transports.DailyRotateFile({
  name: 'file',
  datePattern: '.yyyy-MM-ddTHH',
  filename: path.join(__dirname, "logs", "log_file.log")
}));

var logger = new winston.Logger({transports: transports});

logger.info("current scheduled_mt_task count");

إذا كان الدليل الفرعي /logs غير موجود ، فسيتم طرح استثناء مثل can't open file logs/log_file.log20150213XXX ،

أعتقد أن على Winston إنشاء الدليل الفرعي تلقائيًا بدلاً من مطالبة المستخدمين بإنشائه يدويًا.

التعليق الأكثر فائدة

أنا أصوت لخيار لهذا. بشكل افتراضي ، لا ينبغي إنشاء دليل السجل ، ولكن مع تعيين خيار مثل createDirectory على true ، سيكون من الملائم حقًا أن ينشئ Winston الدليل المذكور.

ال 9 كومينتر

أعتقد أنه يجب أن يكون الأمر متروكًا للمطورين للتأكد من توفير بيئتهم بشكل صحيح.

أيضًا ، المتعلقة بـ pr # 581 و # 511

أنا أصوت لخيار لهذا. بشكل افتراضي ، لا ينبغي إنشاء دليل السجل ، ولكن مع تعيين خيار مثل createDirectory على true ، سيكون من الملائم حقًا أن ينشئ Winston الدليل المذكور.

+1

أتفق مع ambbell هنا. الأمر متروك لمستهلك winston للتأكد من وجود دليل السجلات الخاص به.

+1

أدوات التسجيل الأخرى مثل NLog for .NET و SLF4J for Java قادرة على إنشاء المجلد بسرعة. أيضا ، لماذا يفشل وينستون إذا لم يتمكن من كتابة السجل؟ لماذا يجب أن يفشل التطبيق بأكمله فقط لأنه غير قادر على تسجيل الدخول؟

indexzero هل تقبلون العلاقات العامة لاقتراحPierLucGagnon ؟ حول createDirectory option؟ أجد أن السلوك الحالي غير مريح للغاية (كما ورد في @ guillegr123) غير متوافق مع كيفية عمل أطر عمل التسجيل الأخرى ، لذا فهو يتعارض مع توقعات المستخدم.

أعني ، لماذا لا تخطو خطوة إلى الأمام وتقول إن مطوريها مسؤولية التأكد من إنشاء ملف تسجيل مسبقًا؟

نظرًا لأنه سيتم تجاهل المجلدات التي تسمى / logs إذا كنت تستخدم أحد gitignores الشائعة ، فإن استثناء المجلد المفقود يعد مشكلة شائعة عند نشر تطبيقاتي في بيئات جديدة. آمل أن يتم قبول طلب السحب

indexzero لكن لماذا؟ عندما تقول شيئًا مثل "أعتقد" ، فأنت بحاجة إلى تقديم أسباب لذلك ، أليس كذلك؟ السبب في وجود هذا الخيار هو أن دليل السجلات لا يخضع عادةً للتحكم في الإصدار ، ولن يتم إنشاؤه عند استنساخ الريبو - boom لديك خطأ عند محاولة تشغيله. أنا لا أتحدث حتى عن البيئات المنشورة تلقائيًا.

الحل البديل: أضف هذه التعليمات قبل تصريح النقل:
fs.mkdir('./logs', (err) => { /* no-op */ })

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات