تحليل طوابع السجلات الزمنية
تعود الطوابع 25/Jul/2026:14:30:00 +0200 من Apache وJul 25 14:30:00 من syslog و2026-07-25T14:30:00.123Z كل منها وقتًا واحدًا بصيغة ISO 8601 بالتوقيت العالمي، مع الملّي ثانية منذ بداية عصر يونكس واسم الصيغة المطابقة. مجانية في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- 2026-07-25T14:30:00.123Z INFO worker started
- Iso
- 2026-07-25T14:30:00.123Z
- الحقبة (ms)
- 1,784,989,800,123
- تنسيق الإخراج
- iso8601
لا تتفق ملفات السجلات على كيفية كتابة الطابع الزمني. يُخرج تطبيقك صيغة ISO 8601، ويكتب المضيف بتنسيق syslog، ويختم خادم الويب كل شيء بتنسيق سجل Apache الشائع، فيصبح دمج ثلاثة مصادر يعني كتابة شيفرة التحليل نفسها من جديد. مكالمة واحدة تغني عن كومة من التعابير النمطية لكل صيغة وحسابات المناطق الزمنية.
ثلاث صيغ وإجابة موحَّدة واحدة
اختار كل مصدر سجلات اصطلاحه الخاص قبل عقود ولم يتغير منذئذ. طوابع ISO 8601 مثل 2026-07-25T14:30:00.123Z لا لبس فيها، لكنها مجرد واحدة من الصيغ التي ستلقاها في الواقع. أسطر syslog وفق RFC 3164 تبدأ بطابع مثل Jul 25 14:30:00 — بلا سنة ولا منطقة زمنية، ومع فاصل من مسافتين حين يكون اليوم من رقم واحد.
أما سجلات الوصول في Apache وnginx بالتنسيق الشائع فلها شكل مختلف كليًّا: 25/Jul/2026:14:30:00 +0200، بشرطات مائلة ونقطتين رأسيتين ومنطقة رقمية. يقبل محلل طوابع السجلات الزمنية الطابع الزمني في مطلع السطر بأيٍّ من الصيغ الثلاث ويجيب بسلسلة ISO 8601 UTC موحَّدة واحدة، مع المللي ثانية منذ الحقبة واسم الصيغة التي طابقها. تكفّ عن التفرع حسب نوع المصدر: مهما ورد، يخبرك حقل واحد بمتى وقع الحدث.
وكل ما لا يبدأ بطابع زمني معروف يُرفض بخطأ واضح بدلًا من تاريخ مُخمَّن، فيفشل السطر المعطوب بصوت عالٍ في المنبع بدلًا من إفساد تحليلاتك في المصب بصمت.
ماذا يعني التوحيد فعليًّا
التوحيد هو حيث تسكن الأخطاء الدقيقة، لذا تُعرض القواعد بوضوح تام. مُدخل ISO 8601 بإزاحة صريحة، كـ 2026-07-25T16:30:00+02:00، يُحوَّل إلى UTC ويُعاد كـ 2026-07-25T14:30:00.000Z — اللحظة ذاتها بتهجئة قياسية واحدة. وطابع ISO بلا منطقة زمنية إطلاقًا يُفترض أنه UTC، وهو الافتراضي الأقل إدهاشًا لسجلات الخوادم.
تُحترم المنطقة الرقمية الإلزامية في Apache بدقة. تُحفظ الكسور من الثواني بدقة المللي ثانية. والتحقق من التقويم صارم: 30 فبراير أو ساعة 25 أو ثانية 61 أخطاء، لا تجاوزات صامتة إلى اليوم التالي، لأن خط أنابيب سجلات يقبل تواريخ مستحيلة سيضللك يومًا ما أثناء معالجة حادث.
مصمَّم لخطوط الأنابيب، وحتمي بطبيعته
المحلل دالة نقية: تعابير نمطية للتعرف على الصيغة، ثم حساب تقويمي بالأعداد الصحيحة للتحويل بين التواريخ المدنية وحقبة epoch. لا يقرأ ساعة النظام قط، ولا يتصل بالشبكة، ولا يعتمد على المنطقة الزمنية للآلة التي يعمل عليها، أي إن المدخل نفسه يعطي المخرج نفسه في اختباراتك اليوم وفي الإنتاج بعد عام. تلك الحتمية مهمة حين تعيد تشغيل سجلات مؤرشفة عبر خط أنابيب جديد وتتوقع أن يطابق الخط الزمني المعاد بناؤه الأصلَ بايتًا بايت.
من الاستخدامات النمطية: توحيد أرشيفات مختلطة الصيغ قبل تحميلها في محرك بحث، ومحاذاة أحداث من سجلات التطبيق والنظام وخادم الويب على خط زمني UTC واحد أثناء تحليل الحوادث، والتحقق من أن وكيل الشحن يختم الأسطر بالصيغة التي يتوقعها مجمِّعك.
حالات الاستخدام
دمج السجلات من مصادر مختلفة
وحِّد طوابع ISO وsyslog وApache على خط زمني UTC واحد قبل تحميل الأرشيفات المختلطة في مخزن سجلاتك.
إعادة بناء خط زمني لحادث
حاذِ أحداث التطبيق والنظام وخادم الويب زمنيًّا حين تكون كل طبقة قد ختمت أسطرها بصيغة مختلفة.
التحقق من صيغة وكيل شحن السجلات
تأكد من أن الأسطر الخارجة من وكلائك تبدأ فعلًا بصيغة الطابع الزمني التي يتوقعها مجمِّعك، مع رفض الأسطر المعطوبة مبكرًا.
الأسئلة الشائعة
كم يكلف؟
ويعمل المحلل نفسه مجانًا في متصفحك على هذه الصفحة.
ما صيغ الطوابع الزمنية المدعومة؟
ISO 8601 (مع أو بدون كسور الثواني وإزاحة المنطقة الزمنية)، وsyslog وفق RFC 3164 مثل 'Jul 25 14:30:00'، وتنسيق سجل Apache الشائع مثل '25/Jul/2026:14:30:00 +0200'.
ماذا لو لم يكن للطابع الزمني منطقة زمنية؟
يُفترض أنه UTC. أما الطوابع ذات الإزاحة الصريحة فتُحوَّل إلى UTC، فتعود كل إجابة بالصيغة الموحَّدة ذاتها.
ماذا لو لم يبدأ السطر بطابع زمني معروف؟
وتُرفض التواريخ المستحيلة مثل 30 فبراير أو الساعة 25 بالطريقة ذاتها.
هل تُخزَّن بيانات سجلاتي؟
لا. يُحلَّل السطر في الذاكرة ويُتخلَّص منه؛ ولا يُعاد سوى الطابع الزمني الموحَّد.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/timestamp-log-parse \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"2026-07-25T14:30:00.123Z INFO worker started"}'const res = await fetch("https://api.kit.forhosting.com/dev/timestamp-log-parse", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "2026-07-25T14:30:00.123Z INFO worker started"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/timestamp-log-parse",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "2026-07-25T14:30:00.123Z INFO worker started"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/timestamp-log-parse", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"2026-07-25T14:30:00.123Z INFO worker started"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"2026-07-25T14:30:00.123Z INFO worker started"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/timestamp-log-parse", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "2026-07-25T14:30:00.123Z INFO worker started"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.timestamp_log_parse",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_chars | 10000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تقرأ واجهة API هذه سطرًا من السجل، وتلتقط الطابع الزمني في بدايته بأيٍّ من الصيغ الثلاث، وتعيده موحَّدًا إلى ISO 8601 UTC، مع المللي ثانية منذ الحقبة epoch واسم الصيغة المطابَقة.
ماذا يعني التوحيد فعليًّا
السنة الغائبة في syslog هي الموضع الوحيد الذي لا مفر فيه من التخمين: فمعيار RFC 3164 لا يحمل سنة أصلًا، لذا يملأها المحلل من المعامل default_year (القيمة 2000 ما لم تُمرر غيرها) ويوسم النتيجة بـ year_assumed: true كي يعترف المُخرَج نفسه بالافتراض.
مصمَّم لخطوط الأنابيب، وحتمي بطبيعته
الشيفرة نفسها تعمل مجانًا في متصفحك على هذه الصفحة — ألصق سطرًا وشاهد النتيجة — وتكلف $0.002 لكل طلب حين تؤتمتها عبر API، دون الاحتفاظ بأي ملف أو سطر بعد إرجاع الإجابة.
أسئلة تقنية
ماذا يحدث لأسطر syslog التي لا تحمل سنة؟
تُملأ السنة من المعامل default_year (القيمة 2000 ما لم تُمرر قيمتك الخاصة) وتُوسم النتيجة بـ year_assumed: true كي يظهر الافتراض في المُخرَج.