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 إنشاء الدليل الفرعي تلقائيًا بدلاً من مطالبة المستخدمين بإنشائه يدويًا.
أعتقد أنه يجب أن يكون الأمر متروكًا للمطورين للتأكد من توفير بيئتهم بشكل صحيح.
أيضًا ، المتعلقة بـ 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 */ })
التعليق الأكثر فائدة
أنا أصوت لخيار لهذا. بشكل افتراضي ، لا ينبغي إنشاء دليل السجل ، ولكن مع تعيين خيار مثل
createDirectory
على true ، سيكون من الملائم حقًا أن ينشئ Winston الدليل المذكور.