লগ পার্সার
কাঁচা লগ পেস্ট করুন — JSON, logfmt, ওয়েব অ্যাক্সেস, syslog বা সাধারণ টেক্সট — কোনো প্যাটার্ন না লিখেই টাইমস্ট্যাম্প, লেভেল, এক্সসেপশন ও মূল ফিল্ড পান।
সময়ের পরিসর
2026-10-20T13:55:36.123Z INFO [gateway] request received path=/api/orders user_id=4821
{"@timestamp":"2026-10-20T13:55:37.004Z","level":"error","service":"payment","message":"Charge failed","order_id":"A-1042","user_id":4821}
127.0.0.1 - rafiq [20/Oct/2026:13:55:38 +0000] "POST /api/orders HTTP/1.1" 502 187 "-" "curl/8.5.0"
2026-10-20 13:55:40,512 ERROR [order-service] Unhandled exception while submitting order
java.lang.IllegalStateException: gateway timeout
at com.acme.Order.submit(Order.java:42)
Caused by: java.net.SocketTimeoutException: Read timed out
at com.acme.Gateway.call(Gateway.java:77)
2026-10-20T13:55:41.900Z WARN [gateway] retry scheduled attempt=2 order_id=A-1042কীভাবে ব্যবহার করবেন
- লগের একটি অংশ পেস্ট করুন বা লোকাল .log / .txt ফাইল খুলুন। পার্সিং সঙ্গে সঙ্গে শুরু হয় — Run বোতাম নেই — আর প্রতিটি লাইন এই ক্রমে JSON, logfmt, ওয়েব অ্যাক্সেস, syslog এবং টাইমস্ট্যাম্প/লেভেল-প্রধান টেক্সট হিসেবে যাচাই হয়।
- আগে সারসংক্ষেপ পড়ুন: সময়ের পরিসর, লেভেলের গণনা, এক্সসেপশন, শনাক্ত ফরম্যাট ও সবচেয়ে সাধারণ ফিল্ডের কী। সারসংক্ষেপ সবসময় প্রতিটি ইভেন্ট কভার করে।
- তালিকা ছোট করতে একটি লেভেল চিপে ক্লিক করুন বা সার্চ বাক্সে লিখুন; দুটো একসাথে কাজ করে। যেকোনো সারিতে ক্লিক করে পূর্ণ বার্তা, সব ফিল্ড, এক্সসেপশন স্ট্যাক ও মূল লাইন দেখুন, তারপর ফিল্টার করা ইভেন্টগুলো JSON হিসেবে কপি বা ডাউনলোড করুন।
উদাহরণ
কাঁচা লগ
2026-10-20T13:55:36.123Z INFO [gateway] request received path=/api/orders user_id=4821
{"@timestamp":"2026-10-20T13:55:37.004Z","level":"error","service":"payment","message":"Charge failed","order_id":"A-1042","user_id":4821}
127.0.0.1 - rafiq [20/Oct/2026:13:55:38 +0000] "POST /api/orders HTTP/1.1" 502 187 "-" "curl/8.5.0"
2026-10-20 13:55:40,512 ERROR [order-service] Unhandled exception
java.lang.IllegalStateException: gateway timeout
at com.acme.Order.submit(Order.java:42)পার্স করা সারসংক্ষেপ
Events: 4 · Lines: 6 Time range: 2026-10-20T13:55:36.123Z → 2026-10-20T13:55:40.512 (mixed zones) Levels: info 1 · error 3 Exceptions: 1 Formats: JSON 1 · Web 1 · Text 2 Fields: path 2 · user_id 2 · bytes 1 · client 1 · method 1 · order_id 1 · protocol 1 · status 1
JSON লাইনটি একটি ইভেন্ট; Java ক্লাসের লাইন ও তার স্ট্যাক উপরের ERROR ইভেন্টের ধারাবাহিক লাইন। জোনহীন টেক্সট লাইনটি আক্ষরিক ঘড়ির সময় হিসেবে তুলনা করা হয়, তাই পরিসরে মিশ্র জোন লেখা। HTTP 502 ত্রুটি হিসেবে গণ্য হয়; স্ট্যাটাস কোডটি মূল লেভেল হিসেবে দেখা যায়।
নিয়ম, সীমাবদ্ধতা ও পরিচিত সমস্যা
- শনাক্তকরণ লাইন ধরে ধরে ও ক্রমানুসারে হয়: JSON (প্রতি লাইনে একটি অবজেক্ট), logfmt (অন্তত দুটি key=value জোড়া), Apache/Nginx common বা combined অ্যাক্সেস লগ, syslog RFC 5424/3164, তারপর এমন টেক্সট যার লাইন সমর্থিত টাইমস্ট্যাম্প বা লেভেল দিয়ে শুরু। বাকি সব সাধারণ ইভেন্ট হিসেবে থাকে — কোনো লাইন বাদ পড়ে না।
- কেবল দ্ব্যর্থহীন টাইমস্ট্যাম্প স্বাভাবিক করা হয়: ISO 8601, বছর-প্রথম তারিখ, Apache অ্যাক্সেস-লগের সময় এবং Unix সেকেন্ড বা মিলিসেকেন্ড। 03/04/2026, শুধু তারিখের মান আর বছরবিহীন syslog নিজের মূল টেক্সটেই থাকে, স্বাভাবিক সময় পায় না।
- সেকেন্ডের ভগ্নাংশ মিলিসেকেন্ডে কাটা হয়, কখনো রাউন্ড হয় না। অফসেট অক্ষুণ্ণ থাকে; অফসেটবিহীন সময় আক্ষরিক ঘড়ির সময় হিসেবে তুলনা হয় আর সারসংক্ষেপে naive বা mixed লেখা হয়।
- লেভেল আসে নির্দিষ্ট শব্দভান্ডার (ইংরেজি plus চীনা ও আরবি শব্দ), pino/bunyan সংখ্যা, syslog PRI/severity, বা HTTP স্ট্যাটাস (5xx ত্রুটি, 4xx সতর্কতা, বাকি সব তথ্য) থেকে। চেনা লেভেল না থাকলে লাইনটি info নয়, unknown।
- ইনডেন্টেড লাইন, স্ট্যাক ফ্রেম, Traceback, Exception in thread ও Caused by লাইন আগের ইভেন্টের সঙ্গে যুক্ত হয়; খালি লাইন স্ট্যাক শেষ করে। এটি একটি হিউরিস্টিক — অসমর্থিত মাল্টি-লাইন ফরম্যাটে রেকর্ডের মাঝে খালি লাইন লাগতে পারে।
- এক্সসেপশন চেনা হয় Exception, Error বা Throwable-এ শেষ হওয়া ক্লাস নাম থেকে। সবচেয়ে গভীর Caused by জেতে। ফ্রেম পার্স হয় না, এর বাইরে মূল কারণের র্যাংকিং হয় না, কোনো AI সেবা ডাকা হয় না।
- তালিকায় সর্বোচ্চ 200টি মিলে যাওয়া ইভেন্ট রেন্ডার হয়। গণনা, সারসংক্ষেপ, কপি ও ডাউনলোড সবসময় সব ম্যাচ কভার করে, আর তালিকা কেটে গেলে তা জানায়।
- কঠিন ইনপুট সীমা: 5,000,000 অক্ষর। 500,000 অক্ষরের বেশি হলেও পার্সিং চলে, শুধু বেশি দেরিতে। 200,000 অক্ষরের বেশি লম্বা একক লাইন সাধারণ টেক্সট হিসেবে রাখা হয়।
- JSON অ্যারে ও সুন্দরভাবে ছাপা মাল্টি-লাইন JSON সমর্থিত নয়: প্রতি লাইনে কেবল একটি অবজেক্ট। অবৈধ JSON, কমেন্ট ও ট্রেইলিং কমা ঠিক না করে সাধারণ টেক্সটে ফিরে যায়।
- কিছুই আপলোড, সংরক্ষণ বা URL-এ যায় না। ফাইল ব্রাউজারের File API দিয়ে লোকালে পড়া হয়, আর কপি/ডাউনলোড কেবল বোতামে ক্লিক করলেই হয়।
সম্পর্কিত টুল
লগ গঠনগত হয়ে গেলে সাধারণত এগুলোই পরের ধাপ।