একটি জিনিস আমি অন্য কাউকে কখনই করতে দেখিনি, যে কারণে আমি কল্পনাও করতে পারি না তা হ'ল অ্যাপাচি লগ ফাইল ফর্ম্যাটটিকে আপনার পক্ষে গুরুত্বপূর্ণ এমন তথ্য সহ আরও সহজেই পার্সেবল সংস্করণে পরিবর্তন করা।
উদাহরণস্বরূপ, আমরা কখনও এইচটিটিপি বেসিক লেখার ব্যবহার করি না, সুতরাং আমাদের সেই ক্ষেত্রগুলিতে লগ করার দরকার নেই। প্রতিটি অনুরোধটি পরিবেশন করতে কতক্ষণ সময় নেয় সে সম্পর্কে আমি আগ্রহী, সুতরাং আমরা এটি যুক্ত করব one একটি প্রকল্পের জন্য, আমরা আরও জানতে চাই (আমাদের লোড ব্যালেন্সারে) যদি কোনও সার্ভার অন্যের চেয়ে কম ধরণের অনুরোধগুলি সরবরাহ করে তবে আমরা নামটি লগইন করি আমরা যে সার্ভারটিতে ফিরে যাচ্ছি তা।
এখানে একটি সার্ভারের অ্যাপাচি কনফিগারেশনের একটি অংশ রয়েছে:
# We don't want to log bots, they're our friends
BrowserMatch Pingdom.com robot
# Custom log format, for testing
#
# date proto ipaddr status time req referer user-agent
LogFormat "%{%F %T}t %p %a %>s %D %r %{Referer}i %{User-agent}i" standard
CustomLog /var/log/apache2/access.log standard env=!robot
আপনি এটি থেকে যা বলতে পারবেন না তা হ'ল প্রতিটি ক্ষেত্রের মধ্যে একটি আক্ষরিক ট্যাব অক্ষর () t)। এর অর্থ হল যে আমি পাইথনে কিছু বিশ্লেষণ করতে চাইলে উদাহরণস্বরূপ, অ -200 স্ট্যাটাস প্রদর্শন করতে পারি, আমি এটি করতে পারি:
for line in file("access.log"):
line = line.split("\t")
if line[3] != "200":
print line
বা যদি আমি করতে চাইতাম 'হটলিংক ইমেজগুলি কে?' এটা হবে
if line[6] in ("","-") and "/images" in line[5]:
অ্যাক্সেস লগের আইপি গণনার জন্য, পূর্ববর্তী উদাহরণ:
grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" logfile | sort -n | uniq -c | sort -n
এরকম কিছু হয়ে যায়:
cut -f 3 log | uniq -c | sort -n
পড়তে ও বুঝতে সহজ, এবং কম কম কম্পিউটেশনালি ব্যয়বহুল (কোনও রেজেক্স) নয় যা 9 জিবি লগে এটি কতক্ষণ সময় নেয় তার মধ্যে বিশাল পার্থক্য করে। আপনি যদি ব্যবহারকারী-এজেন্টদের জন্য একই জিনিসটি করতে চান তবে এটি খুব ঝরঝরে। যদি আপনার লগগুলি স্থান-সীমিত হয় তবে আপনাকে নিয়মিত এক্সপ্রেশন মেলানো বা হাতে স্ট্রিং অনুসন্ধান করতে হবে। এই ফর্ম্যাট সহ, এটি সহজ:
cut -f 8 log | uniq -c | sort -n
ঠিক উপরের মত একই। আসলে, আপনি যে কোনও সংক্ষিপ্তসার করতে চান তা মূলত হুবহু একই।
কেন পৃথিবীতে আমি আমার সিস্টেমের সিপিইউকে জোর করে এবং গ্রেপ করতে ব্যয় করব যখন কাটাটি হ'ল আমি তাত্পর্যপূর্ণ অর্ডারগুলি দ্রুত চাইব ঠিক তাই করবে?