Logging এবং Error Handling

চেরিপাই (CherryPy) - Web Development

288

CherryPy একটি শক্তিশালী বিল্ট-ইন লগিং সিস্টেম সরবরাহ করে, যা ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে ত্রুটি, এক্সেস, এবং অন্যান্য গুরুত্বপূর্ণ কার্যকলাপ ট্র্যাক করার জন্য ব্যবহৃত হয়। লগিং সিস্টেম ডেভেলপারদের অ্যাপ্লিকেশন মনিটর করতে সহায়তা করে এবং ডিবাগিংয়ের সময় কার্যকরী একটি টুল হিসেবে কাজ করে। CherryPy এর লগিং সিস্টেমটি Python এর স্ট্যান্ডার্ড logging মডিউলকে ব্যবহার করে।


CherryPy লগিং সিস্টেমের প্রধান ফিচার

  1. অ্যাক্সেস লগ: প্রতিটি HTTP রিকোয়েস্ট এবং রেসপন্সের তথ্য লগ করা হয়।
  2. এররর লগ: অ্যাপ্লিকেশনের ত্রুটি, এক্সেপশন, এবং অন্যান্য সমস্যা লগ করা হয়।
  3. কাস্টম লগ ফাইল: ডিফল্টভাবে CherryPy অ্যাক্সেস এবং এরর লগ ফাইল তৈরি করে, কিন্তু আপনি কাস্টম লগ ফাইলও নির্ধারণ করতে পারেন।
  4. কাস্টমাইজেবল লগিং: লগের লেভেল (INFO, DEBUG, ERROR) এবং ফরম্যাট কাস্টমাইজ করা যায়।

CherryPy তে লগিং কনফিগারেশন

CherryPy তে লগিং সিস্টেম কনফিগার করতে আপনি cherrypy.config.update() বা কনফিগারেশন ফাইল ব্যবহার করতে পারেন। লগিং এর জন্য দুটি প্রধান ফাইল রয়েছে:

  1. অ্যাক্সেস লগ: HTTP রিকোয়েস্টের তথ্য সংরক্ষণ করে।
  2. এররর লগ: অ্যাপ্লিকেশনে ঘটে যাওয়া ত্রুটির তথ্য সংরক্ষণ করে।

CherryPy তে লগিং কনফিগারেশন উদাহরণ

১. CherryPy লগিং কনফিগারেশন ফাইল ব্যবহার

app.conf কনফিগারেশন ফাইল:

[global]
server.socket_host = "127.0.0.1"
server.socket_port = 8080

log.access_file = "./logs/access.log"  # অ্যাক্সেস লগ ফাইলের লোকেশন
log.error_file = "./logs/error.log"    # এরর লগ ফাইলের লোকেশন
log.formatter = "%(asctime)s - %(levelname)s - %(message)s"  # লগ ফরম্যাট
log.rotation =  "1 MB"  # লগ ফাইলের আকার 1MB হলে রোটেট হবে
engine.autoreload.on = True

২. Python কোডে লগিং কনফিগারেশন

import cherrypy

class MyApp:
    @cherrypy.expose
    def index(self):
        cherrypy.log("Index পেজ এক্সেস করা হয়েছে", level="INFO")
        return "স্বাগতম CherryPy অ্যাপ্লিকেশনে!"

if __name__ == '__main__':
    cherrypy.config.update({
        'log.access_file': './logs/access.log',
        'log.error_file': './logs/error.log',
        'log.formatter': '%(asctime)s - %(levelname)s - %(message)s',
        'log.rotation': '1 MB'
    })
    cherrypy.quickstart(MyApp())

কোড ব্যাখ্যা:

  1. log.access_file: এটি অ্যাক্সেস লগের জন্য ফাইল লোকেশন নির্ধারণ করে।
  2. log.error_file: এটি এরর লগের জন্য ফাইল লোকেশন নির্ধারণ করে।
  3. log.formatter: লগের ফরম্যাট কাস্টমাইজ করা হয়, যেমন লগে সময়, লগ লেভেল, এবং বার্তা।
  4. log.rotation: লগ ফাইল রোটেট করা হয় যখন তার আকার ১MB এর বেশি হয়ে যায়।
  5. cherrypy.log(): এটি লগ মেসেজ পাঠানোর জন্য ব্যবহৃত হয়। আপনি INFO, DEBUG, ERROR, WARNING ইত্যাদি লেভেল ব্যবহার করতে পারেন।

লগ লেভেল

CherryPy এর লগিং সিস্টেমে বিভিন্ন লগ লেভেল রয়েছে, যা লগ মেসেজের গুরুত্ব অনুযায়ী কাস্টমাইজ করা যায়:

  1. DEBUG: ডিবাগিং তথ্য।
  2. INFO: সাধারণ তথ্য (যেমন অ্যাপ্লিকেশন স্ট্যাটাস)।
  3. WARNING: সম্ভাব্য সমস্যা বা সতর্কতা।
  4. ERROR: ত্রুটি বা সমস্যা।
  5. CRITICAL: গুরুতর সমস্যা বা ক্র্যাশ।

CherryPy এর লগিং ফরম্যাট কাস্টমাইজ করা

CherryPy লগিং সিস্টেমে লগের আউটপুট ফরম্যাট কাস্টমাইজ করা যায়। আপনি বিভিন্ন ধরনের তথ্য যেমন সময়, লগ লেভেল, মেসেজ ইত্যাদি অন্তর্ভুক্ত করতে পারেন।

লগ ফরম্যাট উদাহরণ:

log.formatter = "%(asctime)s - %(levelname)s - %(message)s"

এখানে:

  • %(asctime)s: লগের সময়।
  • %(levelname)s: লগ লেভেল (INFO, ERROR, WARNING)।
  • %(message)s: লগ বার্তা।

CherryPy তে কাস্টম লগ ফাইল রোটেশন

CherryPy লগ ফাইল রোটেশন সাপোর্ট করে, যা নিশ্চিত করে যে লগ ফাইলগুলির আকার খুব বড় না হয়ে যায়। আপনি log.rotation ব্যবহার করে লগ ফাইলের আকার সীমাবদ্ধ করতে পারেন এবং সেটি রোটেট করতে পারেন।

উদাহরণ: ১০MB রোটেশন সাইজ

log.rotation = "10 MB"

এটি নির্দেশ করে যে, লগ ফাইলের আকার ১০MB হলে সেটি রোটেট হবে এবং নতুন একটি লগ ফাইল তৈরি হবে।


CherryPy লগিং সিস্টেমে কাস্টম লগিং

CherryPy তে কাস্টম লগিংও ব্যবহার করা যায়। আপনি নিজের লগ মেসেজ ফরম্যাট এবং কাস্টম লোগ ফাইলও ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি একটি কাস্টম লগার তৈরি করতে পারেন যা বিশেষ তথ্য ট্র্যাক করে।

উদাহরণ: কাস্টম লগার তৈরি

import logging
import cherrypy

# কাস্টম লগার তৈরি করা হচ্ছে
logger = logging.getLogger('mylogger')
handler = logging.FileHandler('mylogfile.log')
formatter = logging.Formatter('%(asctime)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.INFO)

class MyApp:
    @cherrypy.expose
    def index(self):
        logger.info("Index পেজ এক্সেস করা হয়েছে")
        return "স্বাগতম CherryPy অ্যাপ্লিকেশনে!"

if __name__ == '__main__':
    cherrypy.quickstart(MyApp())

এখানে, একটি কাস্টম লগার তৈরি করা হয়েছে যা mylogfile.log ফাইলে লগ মেসেজ লিখে।


উপসংহার

CherryPy এর বিল্ট-ইন লগিং সিস্টেম শক্তিশালী এবং নমনীয়, যা ডেভেলপারদের তাদের ওয়েব অ্যাপ্লিকেশন পরিচালনায় সহায়তা করে। অ্যাক্সেস এবং এরর লগ ফাইল ব্যবহার করে আপনি সহজেই অ্যাপ্লিকেশনের কার্যকলাপ মনিটর করতে পারেন এবং ডিবাগিংয়ের সময় সহায়তা পান। কাস্টম লগ ফাইল, লগ ফরম্যাট এবং লগ রোটেশন সিস্টেম ব্যবহার করে আপনি আরও উন্নত এবং কার্যকরী লগিং সিস্টেম তৈরি করতে পারবেন।

Content added By

CherryPy একটি শক্তিশালী ওয়েব ফ্রেমওয়ার্ক যা নিজস্ব Built-in Logging System প্রদান করে। এটি সার্ভারের কর্মক্ষমতা, অ্যাক্সেস, ত্রুটি, এবং অন্যান্য কার্যক্রম লগ করার জন্য ব্যবহার করা হয়। লগিং সিস্টেম আপনার অ্যাপ্লিকেশনটির ডিবাগিং, সিস্টেম মনিটরিং এবং পারফরম্যান্স অপটিমাইজেশনে সহায়তা করে।

CherryPy এর লগিং সিস্টেমের সুবিধা

  1. অ্যাক্সেস লগ: ক্লায়েন্ট রিকোয়েস্ট এবং রেসপন্স ট্র্যাক করার জন্য।
  2. ত্রুটি লগ: সার্ভার বা অ্যাপ্লিকেশন স্তরের ত্রুটি শনাক্ত করার জন্য।
  3. কাস্টম লগিং: অ্যাপ্লিকেশনের জন্য কাস্টম লগ তৈরি করার জন্য।
  4. ফাইল লগিং: লগ ফাইল হিসেবে লগ তথ্য সংরক্ষণ করা।

CherryPy লগিং সিস্টেমের উপাদানসমূহ

  1. Access Log: এটি ক্লায়েন্ট রিকোয়েস্টের জন্য লগিং করে। এটি সাধারণত HTTP রিকোয়েস্ট এবং সার্ভার রেসপন্স সম্পর্কিত তথ্য ধারণ করে।
  2. Error Log: এটি ত্রুটি সম্পর্কিত তথ্য যেমন, সার্ভার ক্র্যাশ বা অন্যান্য ত্রুটির বিষয়ে লগ ধারণ করে।
  3. Custom Logging: আপনার অ্যাপ্লিকেশনের বিশেষ কোনো ঘটনা বা কার্যক্রম ট্র্যাক করতে কাস্টম লগ তৈরি করা যায়।

CherryPy লগিং কনফিগারেশন

CherryPy এর লগিং কনফিগারেশন অনেক নমনীয়, এবং আপনি সহজেই লগের ফাইল লোকেশন, ফরম্যাট, এবং লগ লেভেল কনফিগার করতে পারেন।

লগিং কনফিগারেশন উদাহরণ

import cherrypy

class MyApp:
    @cherrypy.expose
    def index(self):
        cherrypy.log("Index page accessed")
        return "Welcome to CherryPy!"

if __name__ == '__main__':
    cherrypy.config.update({
        'log.access_file': './logs/access.log',  # অ্যাক্সেস লগ ফাইলের লোকেশন
        'log.error_file': './logs/error.log',    # ত্রুটি লগ ফাইলের লোকেশন
        'log.screen': True,  # স্ক্রীনে লগ দেখানো
        'log.log_to_file': True,  # ফাইলে লগ লিখা
        'log.format': '%(asctime)s [%(levelname)s] %(message)s',  # লগ ফরম্যাট
        'log.level': 'INFO',  # লগ লেভেল
    })
    cherrypy.quickstart(MyApp())

ব্যাখ্যা:

  • log.access_file: অ্যাক্সেস লগ ফাইলের লোকেশন।
  • log.error_file: ত্রুটি লগ ফাইলের লোকেশন।
  • log.screen: স্ক্রীনে লগ দেখানোর জন্য সেট করা হয়েছে।
  • log.log_to_file: লগ ফাইল সংরক্ষণ চালু করা।
  • log.format: লগ ফরম্যাট নির্ধারণ করা।
  • log.level: লগের লেভেল (যেমন: DEBUG, INFO, WARNING, ERROR, CRITICAL)।

CherryPy এর লগ লেভেল

CherryPy লগ সিস্টেমের বিভিন্ন লেভেল রয়েছে, যা আপনাকে লগিংয়ের গুরুত্ব অনুসারে ফিল্টার করতে সাহায্য করে:

  1. DEBUG: ডিবাগging তথ্য, সাধারণত ডেভেলপমেন্টে ব্যবহৃত হয়।
  2. INFO: সাধারণ তথ্য লগ, যেমন ইউজার লগইন।
  3. WARNING: সতর্কতার বার্তা, যা আপনার নজর দেওয়ার জন্য।
  4. ERROR: ত্রুটি সম্পর্কিত বার্তা।
  5. CRITICAL: গুরুতর ত্রুটি, যা অ্যাপ্লিকেশনের কাজ বন্ধ করে দিতে পারে।

উদাহরণ: লগ লেভেল ব্যবহার

import cherrypy

class MyApp:
    @cherrypy.expose
    def index(self):
        cherrypy.log("Index page accessed", level='INFO')
        return "Welcome to CherryPy!"

if __name__ == '__main__':
    cherrypy.config.update({
        'log.level': 'DEBUG'  # লগ লেভেল সেট করা
    })
    cherrypy.quickstart(MyApp())

এখানে, level='INFO' দিয়ে নির্দিষ্ট একটি লগ বার্তার লেভেল নির্ধারণ করা হয়েছে।


কাস্টম লগ তৈরি করা

CherryPy এর log() ফাংশন ব্যবহার করে আপনি কাস্টম লগ তৈরি করতে পারেন। এই ফাংশনটি নির্দিষ্ট বার্তা এবং লেভেল সহ লগ রেকর্ড করতে সাহায্য করে।

কাস্টম লগিং উদাহরণ

import cherrypy

class MyApp:
    @cherrypy.expose
    def index(self):
        cherrypy.log("This is a custom log message.", level='INFO')
        return "Welcome to CherryPy!"

if __name__ == '__main__':
    cherrypy.config.update({
        'log.access_file': './logs/access.log',  
        'log.error_file': './logs/error.log',
        'log.screen': True,  # স্ক্রীনে লগ দেখানো
        'log.level': 'INFO'  # লগ লেভেল
    })
    cherrypy.quickstart(MyApp())

এখানে cherrypy.log() ব্যবহার করে কাস্টম লগ মেসেজ তৈরি করা হয়েছে, যা INFO লেভেল সহ access.log ফাইলে লেখা হবে।


CherryPy তে Error Handling এবং Logging

CherryPy তে ত্রুটি লগিং খুবই গুরুত্বপূর্ণ। যখন আপনার অ্যাপ্লিকেশন কোনো ত্রুটি ফেলে, তখন সেগুলি error.log ফাইলে রেকর্ড করা হয়।

উদাহরণ: Error Handling এবং Logging

import cherrypy

class MyApp:
    @cherrypy.expose
    def index(self):
        raise cherrypy.HTTPError(500, "This is a custom error message.")

if __name__ == '__main__':
    cherrypy.config.update({
        'log.error_file': './logs/error.log',  # ত্রুটি লগ ফাইল
        'log.level': 'ERROR'  # ত্রুটি লগিং লেভেল
    })
    cherrypy.quickstart(MyApp())

এখানে, যদি কোনো ত্রুটি ঘটে, তবে ত্রুটির বার্তা error.log ফাইলে লেখা হবে।


CherryPy এর Built-in Logging System ওয়েব অ্যাপ্লিকেশনগুলোর জন্য একটি শক্তিশালী টুল। এর মাধ্যমে আপনি অ্যাপ্লিকেশনের বিভিন্ন কার্যক্রম যেমন অ্যাক্সেস, ত্রুটি, এবং কাস্টম ইভেন্ট লগ করতে পারেন। CherryPy এর লগিং সিস্টেমের মাধ্যমে অ্যাপ্লিকেশনের পারফরম্যান্স মনিটর করা এবং ডিবাগিং সহজ করা সম্ভব। লগিং কনফিগারেশন, লগ লেভেল এবং কাস্টম লগ ব্যবহারের মাধ্যমে আপনার অ্যাপ্লিকেশনকে আরও কার্যকর এবং নির্ভরযোগ্য করা যায়।

Content added By

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 তে কাস্টম লগ ফাইল তৈরি, লগ লেভেল কাস্টমাইজেশন এবং বিভিন্ন লগ ফাইলের ব্যবস্থাপনা করে আপনি আপনার অ্যাপ্লিকেশনের কার্যকারিতা আরও সহজে ট্র্যাক করতে পারবেন।

Content added By

CherryPy তে Error Handling এবং Custom Error Pages ব্যবহারের মাধ্যমে আপনি ওয়েব অ্যাপ্লিকেশনগুলিকে আরো ব্যবহারবান্ধব এবং পেশাদারী করতে পারেন। যখন অ্যাপ্লিকেশনটি কোনো ত্রুটি বা ভুল রিকোয়েস্ট পায়, তখন একটি কাস্টম ত্রুটি পৃষ্ঠা দেখানো যেতে পারে, যাতে ইউজার ভালোভাবে বুঝতে পারে যে কি সমস্যা হয়েছে এবং তারা কীভাবে সমস্যার সমাধান করতে পারে।


CherryPy তে Error Handling

CherryPy তে Error Handling করা হয় on_error টুল এবং exception handling এর মাধ্যমে। আপনি কিছু নির্দিষ্ট HTTP ত্রুটি কোড (যেমন 404, 500) হ্যান্ডেল করতে পারেন এবং কাস্টম ত্রুটি বার্তা বা পৃষ্ঠা প্রদর্শন করতে পারেন।

CherryPy Error Handling এর প্রাথমিক ধারণা

CherryPy তে প্রতিটি রিকোয়েস্ট হ্যান্ডলিং করার সময় যদি কোনো ত্রুটি ঘটে, তবে সেটি একটি exception হিসেবে ধরা হয়। আপনি on_error টুল ব্যবহার করে ত্রুটি হ্যান্ডলিং কাস্টমাইজ করতে পারেন।

উদাহরণ: CherryPy Error Handling

import cherrypy

class MyApp:
    @cherrypy.expose
    def index(self):
        return "হ্যালো, CherryPy!"
    
    @cherrypy.expose
    def cause_error(self):
        raise ValueError("এটি একটি কাস্টম ত্রুটি!")

if __name__ == '__main__':
    cherrypy.quickstart(MyApp())

এখানে cause_error মেথডে একটি কাস্টম ValueError সৃষ্টি করা হয়েছে। চেরিপাই এই ত্রুটি ধরবে এবং একটি সাধারণ ত্রুটি বার্তা প্রদর্শন করবে।


Custom Error Pages তৈরি করা

CherryPy তে Custom Error Pages তৈরি করতে error_page কনফিগারেশন ব্যবহার করা যায়। আপনি একটি কাস্টম HTML পৃষ্ঠা বা JSON রেসপন্স তৈরি করতে পারেন, যা ইউজারকে ত্রুটির কারণ ব্যাখ্যা করে।

উদাহরণ: Custom Error Pages

import cherrypy

class MyApp:
    @cherrypy.expose
    def index(self):
        return "স্বাগতম CherryPy-তে!"
    
    @cherrypy.expose
    def cause_error(self):
        raise ValueError("এটি একটি কাস্টম ত্রুটি!")

    @cherrypy.expose
    def page_not_found(self):
        raise cherrypy.HTTPError(404, "এই পৃষ্ঠা পাওয়া যায়নি!")

if __name__ == '__main__':
    cherrypy.config.update({
        'error_page.404': 'page_not_found',  # 404 এর জন্য কাস্টম পৃষ্ঠা
    })
    cherrypy.quickstart(MyApp())

এখানে:

  • page_not_found মেথডে 404 ত্রুটি হ্যান্ডল করা হচ্ছে।
  • cherrypy.config.update ব্যবহার করে 404 ত্রুটি কোডের জন্য কাস্টম পৃষ্ঠা নির্ধারণ করা হয়েছে।

Error Handling এর জন্য Custom Error Pages

আপনি সহজেই 404, 500, বা অন্য কোনো ত্রুটি কোডের জন্য কাস্টম error pages তৈরি করতে পারেন।

উদাহরণ: কাস্টম 404 Error Page

import cherrypy

class MyApp:
    @cherrypy.expose
    def index(self):
        return "স্বাগতম CherryPy অ্যাপে!"
    
    @cherrypy.expose
    def cause_error(self):
        raise ValueError("এটি একটি কাস্টম ত্রুটি!")

    @cherrypy.expose
    def page_not_found(self):
        return '''
            <html>
                <body>
                    <h1>404 - পৃষ্ঠা পাওয়া যায়নি</h1>
                    <p>আপনি যে পৃষ্ঠাটি খুঁজছেন তা পাওয়া যায়নি।</p>
                </body>
            </html>
        '''

if __name__ == '__main__':
    cherrypy.config.update({
        'error_page.404': 'page_not_found',  # 404 ত্রুটির জন্য কাস্টম পৃষ্ঠা
    })
    cherrypy.quickstart(MyApp())

এখানে:

  • page_not_found মেথডটি একটি কাস্টম 404 পৃষ্ঠা রেন্ডার করে, যেখানে ইউজারকে জানানো হচ্ছে যে পৃষ্ঠা পাওয়া যায়নি।

Handling Specific HTTP Errors

CherryPy তে আপনি নির্দিষ্ট HTTP ত্রুটির জন্য কাস্টম পৃষ্ঠা তৈরি করতে পারেন, যেমন 404, 403, 500 ইত্যাদি।

উদাহরণ: কাস্টম 500 Internal Server Error Page

import cherrypy

class MyApp:
    @cherrypy.expose
    def index(self):
        return "স্বাগতম CherryPy-তে!"
    
    @cherrypy.expose
    def cause_error(self):
        raise RuntimeError("এটি একটি 500 ত্রুটি!")

    @cherrypy.expose
    def internal_server_error(self):
        return '''
            <html>
                <body>
                    <h1>500 - সার্ভার ত্রুটি</h1>
                    <p>কিছু সমস্যা ঘটেছে, দয়া করে পরে চেষ্টা করুন।</p>
                </body>
            </html>
        '''

if __name__ == '__main__':
    cherrypy.config.update({
        'error_page.500': 'internal_server_error',  # 500 ত্রুটির জন্য কাস্টম পৃষ্ঠা
    })
    cherrypy.quickstart(MyApp())

এখানে:

  • internal_server_error মেথডটি একটি কাস্টম 500 পৃষ্ঠা রেন্ডার করে, যেখানে সার্ভার ত্রুটির কথা জানানো হচ্ছে।

CherryPy তে Logging

চেরিপাই তে logging ব্যবস্থাপনা ত্রুটিগুলি ট্র্যাক করার জন্য গুরুত্বপূর্ণ। আপনি cherrypy.log() ব্যবহার করে ত্রুটির লগ রাখতে পারেন।

উদাহরণ: Error Logging

import cherrypy

class MyApp:
    @cherrypy.expose
    def index(self):
        return "স্বাগতম CherryPy অ্যাপে!"
    
    @cherrypy.expose
    def cause_error(self):
        raise RuntimeError("এটি একটি লগ ত্রুটি!")

if __name__ == '__main__':
    cherrypy.config.update({
        'log.error_file': 'error.log',  # ত্রুটি লগ ফাইল
        'log.access_file': 'access.log',  # অ্যাক্সেস লগ ফাইল
    })
    cherrypy.quickstart(MyApp())

এখানে:

  • ত্রুটির লগ error.log ফাইলে সেভ হবে এবং অ্যাক্সেস লগ access.log ফাইলে সেভ হবে।

CherryPy তে Error Handling এবং Custom Error Pages ব্যবহারের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনকে আরো ব্যবহারবান্ধব এবং পেশাদারী করে তুলতে পারেন। সঠিক ত্রুটি বার্তা প্রদান ইউজারদের সমস্যা বুঝতে এবং তা সমাধান করতে সহায়তা করে। CherryPy তে HTTP Error Codes (যেমন 404, 500) হ্যান্ডলিং সহজ, এবং কাস্টম পৃষ্ঠা তৈরি করা খুবই কার্যকর।

Content added By

CherryPy তে Exception Management এবং Debugging Techniques ব্যবহারের মাধ্যমে অ্যাপ্লিকেশন ডেভেলপমেন্টের সময় ঘটতে পারে এমন ত্রুটি বা সমস্যাগুলোর সঠিকভাবে চিহ্নিত করা এবং সমাধান করা যায়। CherryPy তে ত্রুটি পরিচালনা করার জন্য কিছু বিল্ট-ইন মেকানিজম এবং ডিবাগিং টেকনিক রয়েছে, যা ডেভেলপারদের কার্যকরভাবে অ্যাপ্লিকেশন উন্নত এবং রক্ষণাবেক্ষণ করতে সাহায্য করে।


CherryPy তে Exception Management

CherryPy তে Exception Management হল একটি প্রক্রিয়া যার মাধ্যমে অ্যাপ্লিকেশনে উত্থাপিত ত্রুটির জন্য সঠিক রেসপন্স এবং লগিং ব্যবস্থা তৈরি করা হয়। CherryPy স্বয়ংক্রিয়ভাবে কিছু সাধারণ ত্রুটি হ্যান্ডেল করে, তবে আপনি চাইলে কাস্টম ত্রুটি হ্যান্ডলারের মাধ্যমে ত্রুটি পরিচালনা করতে পারেন।

CherryPy তে ত্রুটি হ্যান্ডলিংয়ের জন্য কাস্টম হ্যান্ডলার

CherryPy তে ত্রুটি হ্যান্ডলিং করার জন্য আপনি on_error হুক বা কাস্টম Exception Handler ব্যবহার করতে পারেন। এর মাধ্যমে আপনি কোনো নির্দিষ্ট ত্রুটি, যেমন 404 (পেজ না পাওয়া) বা 500 (সার্ভার ত্রুটি), এর জন্য কাস্টম রেসপন্স তৈরি করতে পারেন।

উদাহরণ: কাস্টম Exception Handler

import cherrypy

class MyApp:
    @cherrypy.expose
    def index(self):
        return "স্বাগতম CherryPy অ্যাপে!"

    @cherrypy.expose
    def error(self):
        # একটি কৃত্রিম ত্রুটি উত্থাপন করা
        raise ValueError("একটি কৃত্রিম ত্রুটি ঘটেছে!")

    # কাস্টম ত্রুটি হ্যান্ডলার
    def handle_error(self, exception):
        return f"ত্রুটি: {str(exception)}"

if __name__ == '__main__':
    cherrypy.tree.mount(MyApp())
    cherrypy.config.update({'error_page.default': MyApp().handle_error})  # কাস্টম ত্রুটি পেজ
    cherrypy.quickstart()

কোড ব্যাখ্যা:

  • error() মেথড: একটি কৃত্রিম ত্রুটি উত্থাপন করছে ValueError ব্যবহার করে।
  • handle_error() মেথড: কাস্টম ত্রুটি হ্যান্ডলার, যা যেকোনো ধরনের ত্রুটি গ্রহণ করে এবং একটি কাস্টম রেসপন্স প্রদান করে।
  • error_page.default কনফিগারেশন: CherryPy তে এই কনফিগারেশন ব্যবহার করে কাস্টম ত্রুটি পেজ নির্ধারণ করা হয়েছে।

এই উদাহরণে, যখন আপনি /error URL এ যাবেন, একটি কৃত্রিম ত্রুটি দেখানো হবে এবং কাস্টম ত্রুটি রেসপন্স প্রদর্শিত হবে।


CherryPy তে Exception Handling for HTTP Errors

CherryPy তে সাধারণ HTTP ত্রুটি যেমন 404, 500 ইত্যাদি হ্যান্ডল করার জন্য আপনি কাস্টম ত্রুটি পেজ তৈরি করতে পারেন।

উদাহরণ: 404 ত্রুটি হ্যান্ডলিং

import cherrypy

class MyApp:
    @cherrypy.expose
    def index(self):
        return "স্বাগতম CherryPy অ্যাপে!"

    @cherrypy.expose
    def not_found(self):
        raise cherrypy.HTTPError(404, "এই পৃষ্ঠাটি পাওয়া যায়নি")

if __name__ == '__main__':
    cherrypy.tree.mount(MyApp())
    cherrypy.config.update({
        'tools.error_page.on': True,
        'error_page.404': '404.html'  # 404 এর জন্য কাস্টম পেজ
    })
    cherrypy.quickstart()

এখানে:

  • cherrypy.HTTPError(404) ব্যবহার করা হয়েছে 404 ত্রুটি ঘটানোর জন্য।
  • tools.error_page.on কনফিগারেশন ব্যবহার করে কাস্টম 404 পেজ সেট করা হয়েছে।

CherryPy তে Debugging Techniques

CherryPy তে অ্যাপ্লিকেশন ডেভেলপ করার সময় ডিবাগিং অনেক গুরুত্বপূর্ণ। ত্রুটি সনাক্তকরণের জন্য CherryPy কিছু ডিবাগিং টেকনিক এবং টুলস সরবরাহ করে, যা ডেভেলপারদের কোডের সমস্যা চিহ্নিত করতে সাহায্য করে।

CherryPy তে Debugging চালু করা

CherryPy তে ডিবাগিং সক্রিয় করতে cherrypy.config.update() এর মাধ্যমে কিছু কনফিগারেশন সেট করা যায়। tools.log_error এবং tools.access_log ব্যবহার করে আপনি লগ ফাইল তৈরি করতে পারেন যা ত্রুটি এবং রিকোয়েস্ট সংক্রান্ত তথ্য ধারণ করবে।

উদাহরণ: Debugging চালু করা

import cherrypy

class MyApp:
    @cherrypy.expose
    def index(self):
        return "স্বাগতম CherryPy অ্যাপে!"

if __name__ == '__main__':
    cherrypy.config.update({
        'tools.log_error.on': True,  # ত্রুটি লগ চালু করা
        'tools.access_log.on': True,  # অ্যাক্সেস লগ চালু করা
        'log.access_file': './logs/access.log',  # অ্যাক্সেস লগ ফাইল
        'log.error_file': './logs/error.log'  # ত্রুটি লগ ফাইল
    })
    cherrypy.quickstart(MyApp())

এখানে:

  • tools.log_error.on: ত্রুটি লগিং চালু করা হয়েছে, যাতে সমস্ত ত্রুটি লগ ফাইলে সংরক্ষণ হয়।
  • tools.access_log.on: অ্যাক্সেস লগিং চালু করা হয়েছে, যাতে সার্ভারের প্রতি রিকোয়েস্টের তথ্য লগে সংরক্ষণ হয়।

CherryPy তে স্ট্যাক ট্রেস দেখতে

CherryPy তে ডিবাগিংয়ের সময় আপনি স্ট্যাক ট্রেস দেখতে পারেন, যা আপনাকে ত্রুটির উৎস চিহ্নিত করতে সহায়তা করে। ডিফল্টভাবে, CherryPy স্ট্যাক ট্রেস রেসপন্সের মধ্যে দেখায়, তবে আপনি এটি কনফিগারেশন ফাইলের মাধ্যমে কাস্টমাইজ করতে পারেন।

উদাহরণ: স্ট্যাক ট্রেস চালু করা

import cherrypy

class MyApp:
    @cherrypy.expose
    def index(self):
        return "স্বাগতম CherryPy অ্যাপে!"

    @cherrypy.expose
    def error(self):
        raise ValueError("একটি কৃত্রিম ত্রুটি ঘটেছে!")

if __name__ == '__main__':
    cherrypy.config.update({'environment': 'production'})  # স্ট্যাক ট্রেস ডিফল্টভাবে বন্ধ থাকে
    cherrypy.quickstart(MyApp())

এটি প্রোডাকশন পরিবেশে চালানো হলে স্ট্যাক ট্রেস দেখাবে না। আপনি চাইলে environment সেটিং পরিবর্তন করে ডিবাগিং চালু করতে পারেন।


CherryPy তে Exception Logging

CherryPy তে ত্রুটি লগিং করার জন্য logging মডিউল ব্যবহার করা যেতে পারে। এটি সার্ভারের ত্রুটি এবং অন্যান্য গুরুত্বপূর্ণ লগ ফাইল তৈরি করতে সাহায্য করে।

উদাহরণ: Exception Logging

import cherrypy
import logging

class MyApp:
    @cherrypy.expose
    def index(self):
        return "স্বাগতম CherryPy অ্যাপে!"

    @cherrypy.expose
    def error(self):
        try:
            raise ValueError("একটি কৃত্রিম ত্রুটি ঘটেছে!")
        except Exception as e:
            logging.error(f"ত্রুটি: {str(e)}")
            return "ত্রুটি ঘটেছে!"

if __name__ == '__main__':
    logging.basicConfig(filename='app.log', level=logging.ERROR)
    cherrypy.quickstart(MyApp())

এখানে:

  • logging.basicConfig() ব্যবহার করে একটি লগ ফাইল app.log তৈরি করা হয়েছে, যেখানে ত্রুটি লগ করা হবে।

CherryPy তে Exception Management এবং Debugging Techniques অত্যন্ত গুরুত্বপূর্ণ, যা ডেভেলপারদের অ্যাপ্লিকেশনের ত্রুটি চিহ্নিত করতে এবং সমাধান করতে সহায়তা করে। CherryPy তে কাস্টম ত্রুটি হ্যান্ডলিং, লগিং এবং ডিবাগিং টেকনিকগুলির মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনকে আরও কার্যকরী এবং নির্ভরযোগ্য করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...