indexzero -
ما هو شعورك حيال إضافة معلمة API اختيارية إلى نقل الملفات بحيث يمكن تقسيم ملفات السجل حسب التاريخ؟ الفكرة هي أنه في كل يوم جديد ، سيتم إنشاء ملف سجل جديد وسيقوم Winston تلقائيًا بمعالجة كل هذا / معرفة ملف السجل الذي يجب الكتابة إليه بناءً على التاريخ.
سوف تقبل طلب التصحيح لهذا
رائع! أي اقتراحات لواجهة برمجة التطبيقات؟ كنت أفكر في شيء مثل:
// Specify path option and default to spanning by day ( 24 hours in each file )
new (winston.transports.File)({ path: './logs' })
ولكن قد يكون هناك بعض الفوائد في السماح بفلتر تاريخ / وقت مخصص.
ليست هناك حاجة لتعقيد كود Winston عندما تكون هناك أداة قياسية لهذه المهمة: Logrotate (http://linuxcommand.org/man_pages/logrotate8.html)
indexzero هل التصحيح لهذا لا يزال مقبولاً؟ أعلم أن هذا يمكن تنفيذه عبر خيار اسم الملف ولكن يمكنني إضافة خيار آخر لذلك.
إنها ليست مهمة الشياطين الفردية لكل تطبيق تناوب في السجل. هذا هو السبب في أن لدينا أدوات مثل logrotate ، مثل cemuzunlar قال.
تضمين التغريدة
أوافق ، من الناحية المثالية ، هذه لن تكون مشكلة وينستون ، لكن
أرى...
التفكير بصوت عالٍ: نقل منطق دوران السجل إلى برنامج عقدة منفصل ، لذلك فهو استنساخ بسيط قابل لإعادة الاستخدام يعمل عبر الأنظمة الأساسية.
++ 1
بينما أنا أيضًا من المدافعين عن اللوغروت ، إلا أنها لا تقوم بعملها بمفردها. يعد Logrotate قابلاً للاستخدام جدًا لأنه يوفر طريقة لإخبار البرامج بأن الوقت قد حان لمسح سجلاتهم وإغلاقها.
يحتوي نقل الملف على وظيفة _createStream.checkFile.createAndFlush التي تبدو للوهلة الأولى أنها يجب أن تقوم بالأشياء المناسبة. لاستخدام هذا من أجل logrotate ، اجعل برنامج العقدة الخاص بك يقوم بتعطيل SIGHUP والوصول إلى هذه الوظيفة. ليس لدي وقت قبل عملي اليومي لأكتب الرمز البريدي ، لكنني سأحاول الليلة ونشر نتائجي.
يجب أن تكون الاستجابة لـ SIGHUP بهذه الطريقة قابلة للنقل إلى النوافذ ، وبعد ذلك يتم ترك أي دوران في السجل تستخدمه على النوافذ (مكتبة العقدة أو أي سحر آخر) كتدريب للقارئ.
في حال كان أي شخص آخر يبحث عن هذا:
شكرا على النصيحة ،pccowboy. أنا من أشد المدافعين عن logrotate أيضًا. أنا متردد في استخدام تهيئة واحدة لخدمة node.js (مثل winston File maxsize ، إلخ) وأخرى (logrotate) للخدمات الأخرى (nginx ، و redis ، وما إلى ذلك) وأفضل استخدام logrotate لجميع ملفات السجل الخاصة بي. لقد جمعت وظيفة بسيطة تستمع إلى إشارات HUP وتعيد فتح ملف السجل بعد الدوران.
إذا سنحت لي الفرصة ، سأحاول إعادة كتابة هذا بطريقة أنظف (على سبيل المثال ، كخيار تكوين لنقل الملف) وإنشاء طلب سحب.
ثابت ب # 205.
مذهل!
التعليق الأكثر فائدة
ليست هناك حاجة لتعقيد كود Winston عندما تكون هناك أداة قياسية لهذه المهمة: Logrotate (http://linuxcommand.org/man_pages/logrotate8.html)