CherryPy তে লগিং (logging) ব্যবস্থাপনা অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে যখন অ্যাপ্লিকেশনটি প্রোডাকশনে চলে যায়। লগ ফাইলের মাধ্যমে আপনি অ্যাপ্লিকেশনের কার্যকারিতা ট্র্যাক করতে, ত্রুটি শনাক্ত করতে এবং অন্যান্য ডায়াগনস্টিক তথ্য সংগ্রহ করতে পারেন। CherryPy তে কাস্টম লগ তৈরি এবং সেগুলি পরিচালনা করার জন্য Python এর logging মডিউল ব্যবহৃত হয়।
CherryPy তে কাস্টম লগিং সিস্টেম
CherryPy তে ডিফল্ট লগিং সিস্টেম থাকে, তবে আপনি আপনার প্রয়োজন অনুযায়ী কাস্টম লগ ফাইল তৈরি এবং কনফিগার করতে পারেন। cherrypy.log এবং logging মডিউল ব্যবহার করে আপনি লগের সেটিংস কাস্টমাইজ করতে পারবেন।
CherryPy তে কাস্টম লগ তৈরি করা
CherryPy তে লগ ফাইল কাস্টমাইজ করার জন্য cherrypy.config.update() এবং Python logging মডিউল ব্যবহার করতে হয়। আপনি লগ ফাইলের নাম, ফরম্যাট, লগ লেভেল এবং অন্যান্য সেটিংস কাস্টমাইজ করতে পারেন।
উদাহরণ: CherryPy তে কাস্টম লগ তৈরি করা
import cherrypy
import logging
# কাস্টম লগ কনফিগারেশন
def configure_logging():
logging.basicConfig(
filename="myapp.log", # লগ ফাইলের নাম
level=logging.DEBUG, # লগ লেভেল
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", # লগ ফরম্যাট
)
class MyApp:
@cherrypy.expose
def index(self):
# লগ করা
logging.info("হোম পেজ প্রদর্শিত হচ্ছে")
return "স্বাগতম CherryPy অ্যাপে!"
@cherrypy.expose
def about(self):
# লগ করা
logging.info("অ্যাবাউট পেজ প্রদর্শিত হচ্ছে")
return "এই হল অ্যাবাউট পেজ"
if __name__ == '__main__':
# লগ কনফিগারেশন
configure_logging()
# CherryPy সার্ভার কনফিগারেশন এবং চালানো
cherrypy.quickstart(MyApp())
এখানে:
logging.basicConfig()দিয়ে লগ ফাইলের নাম, লগ লেভেল এবং ফরম্যাট নির্ধারণ করা হয়েছে।logging.info()ব্যবহার করে নির্দিষ্ট কার্যক্রম (যেমন পেজ ভিজিট) লগ করা হয়েছে।
লগ ফাইল myapp.log এ সময়, লেভেল এবং বার্তা সহ লগ লেখা হবে।
CherryPy তে লগ ফরম্যাট কাস্টমাইজ করা
লগের আউটপুট ফরম্যাট কাস্টমাইজ করতে logging মডিউলের Formatter ক্লাস ব্যবহার করা যেতে পারে। এটি আপনাকে কাস্টম ফরম্যাট সেট করতে সাহায্য করে।
উদাহরণ: কাস্টম লগ ফরম্যাট
import cherrypy
import logging
def configure_logging():
logger = logging.getLogger()
handler = logging.FileHandler("custom_log.log")
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
class MyApp:
@cherrypy.expose
def index(self):
logging.debug("ডিবাগ লেভেলে লগ করা হয়েছে")
logging.info("ইনফো লেভেলে লগ করা হয়েছে")
logging.warning("ওয়ার্নিং লেভেলে লগ করা হয়েছে")
return "লগিং উদাহরণ!"
if __name__ == '__main__':
configure_logging()
cherrypy.quickstart(MyApp())
এখানে, Formatter ব্যবহার করে লগের আউটপুট ফরম্যাট কাস্টমাইজ করা হয়েছে। লগ ফাইল custom_log.log এ এই ফরম্যাটে লগ লেখা হবে।
CherryPy তে লগ লেভেল কাস্টমাইজ করা
logging মডিউল বিভিন্ন ধরনের লগ লেভেল সাপোর্ট করে, যেমন:
DEBUG: বিস্তারিত ডিবাগging তথ্য।INFO: সাধারণ তথ্য বা স্ট্যাটাস।WARNING: সতর্কতা বার্তা।ERROR: ত্রুটি বার্তা।CRITICAL: গুরুতর ত্রুটি বার্তা।
আপনি লগ লেভেল কাস্টমাইজ করতে পারেন এবং যে ধরনের বার্তা চান তা রেকর্ড করতে পারেন।
উদাহরণ: লগ লেভেল কাস্টমাইজ করা
import cherrypy
import logging
def configure_logging():
logging.basicConfig(
filename="app_with_levels.log",
level=logging.DEBUG, # এখানে লেভেল পরিবর্তন করা হচ্ছে
format="%(asctime)s - %(levelname)s - %(message)s",
)
class MyApp:
@cherrypy.expose
def index(self):
logging.debug("ডিবাগ বার্তা: ইনডেক্স পেজ ভিজিট")
logging.info("ইনফো বার্তা: ইনডেক্স পেজ দেখা হচ্ছে")
logging.warning("ওয়ার্নিং বার্তা: ইনডেক্স পেজের মধ্যে সমস্যা হতে পারে")
logging.error("এরর বার্তা: ইনডেক্স পেজে ত্রুটি ঘটেছে")
return "লগ লেভেল কাস্টমাইজেশন সম্পন্ন!"
if __name__ == '__main__':
configure_logging()
cherrypy.quickstart(MyApp())
এখানে, logging.DEBUG লেভেল ব্যবহার করা হয়েছে, যার মানে হলো সমস্ত লেভেলের বার্তা (DEBUG, INFO, WARNING, ERROR, CRITICAL) রেকর্ড হবে।
CherryPy তে কাস্টম লগ ফাইল তৈরি করা
আপনি চাইলে বিভিন্ন লগ ফাইল তৈরি করতে পারেন বিভিন্ন কার্যক্রমের জন্য। যেমন: অ্যাক্সেস লগ এবং এরর লগ আলাদা আলাদা রাখা।
উদাহরণ: আলাদা লগ ফাইল তৈরি
import cherrypy
import logging
# অ্যাক্সেস লগ কনফিগারেশন
def configure_access_log():
access_logger = logging.getLogger('access')
handler = logging.FileHandler("access_log.log")
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
access_logger.addHandler(handler)
access_logger.setLevel(logging.INFO)
# এরর লগ কনফিগারেশন
def configure_error_log():
error_logger = logging.getLogger('error')
handler = logging.FileHandler("error_log.log")
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
error_logger.addHandler(handler)
error_logger.setLevel(logging.ERROR)
class MyApp:
@cherrypy.expose
def index(self):
logging.getLogger('access').info("ইনডেক্স পেজ ভিজিট")
logging.getLogger('error').error("এটি একটি ত্রুটি বার্তা")
return "অ্যাক্সেস এবং এরর লগ ফাইল তৈরি হয়েছে!"
if __name__ == '__main__':
configure_access_log()
configure_error_log()
cherrypy.quickstart(MyApp())
এখানে:
- অ্যাক্সেস লগ:
access_log.logফাইলে তথ্য রাখা হবে। - এরর লগ:
error_log.logফাইলে ত্রুটি তথ্য সংরক্ষণ করা হবে।
উপসংহার
CherryPy তে কাস্টম লগিং ব্যবস্থাপনা একটি শক্তিশালী টুল যা আপনাকে অ্যাপ্লিকেশনের কার্যকারিতা এবং ত্রুটির বিষয়ে মনিটর করতে সাহায্য করে। logging মডিউল ব্যবহার করে আপনি লগ ফাইলের নাম, লেভেল, ফরম্যাট কাস্টমাইজ করতে পারেন। CherryPy তে কাস্টম লগ ফাইল তৈরি, লগ লেভেল কাস্টমাইজেশন এবং বিভিন্ন লগ ফাইলের ব্যবস্থাপনা করে আপনি আপনার অ্যাপ্লিকেশনের কার্যকারিতা আরও সহজে ট্র্যাক করতে পারবেন।
Read more