قراءة البيانات من ملف السجل أثناء قيام تطبيق منفصل بالكتابة عليه

StackOverflow https://stackoverflow.com/questions/62832

سؤال

أرغب في مراقبة ملف السجل الذي تتم الكتابة إليه بواسطة أحد التطبيقات.أرغب في معالجة الملف سطرًا تلو الآخر أثناء كتابته أو بعد فترة وجيزة.لم أجد طريقة لاكتشاف تمديد الملف بعد الوصول إلى eof.

يجب أن يعمل الكود على أجهزة Mac والكمبيوتر الشخصي، ويمكن أن يكون بأي لغة، على الرغم من أنني أكثر دراية بـ C++ وPerl.

هل لدى أي شخص اقتراح لأفضل طريقة للقيام بذلك؟

هل كانت مفيدة؟

المحلول

في بيرل، الملف::الذيل الوحدة تفعل بالضبط ما تحتاجه.

نصائح أخرى

إجابة عامة كافية:

تُرجع معظم اللغات، في EOF، أنه لم تتم قراءة أي بيانات.يمكنك إعادة محاولة القراءة بعد فترة زمنية، وإذا زاد حجم الملف منذ ذلك الحين، فسيقوم نظام التشغيل هذه المرة بإرجاع البيانات.

جوهر tail -f هي الحلقة التالية:

open IN, $file;
while(1) {
  my $line = <IN>;
  if($line) {
    #process line...
  } else {
    sleep(1);
    seek(IN,0,1);
  }
}
close IN;

ال يطلب المكالمة هي مسح علامة EOF.

يجب أن تكون قادرًا على استخدام قراءة io القياسية من tail -f

كنت أفكر في إخراج الإجراءات عبر نقطة الإنطلاق، ومن ثم التتبع (أو استخدام الحلقة فوق) الملف الذي تم إنشاؤه بواسطة نقطة الإنطلاق بعض الاستخدام.

بالنسبة لجافا، راجع هذه المقالة الممتازة

http://www.informit.com/guides/content.aspx?g=java&seqNum=226

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top