আমার একটি অজগর প্রকল্প রয়েছে যার নীচের কাঠামো রয়েছে -
Project
-- pkg01
-- test01.py
-- pkg02
-- test02.py
-- logging.conf
আমি স্ট্যান্ডআউট এবং একটি লগ ফাইল বার্তাগুলি মুদ্রণের জন্য ডিফল্ট লগিং মডিউল ব্যবহার করার পরিকল্পনা করি। লগিং মডিউলটি ব্যবহার করতে, কিছু সূচনা প্রয়োজন -
import logging.config
logging.config.fileConfig('logging.conf')
logger = logging.getLogger('pyApp')
logger.info('testing')
বর্তমানে, আমি বার্তাগুলি লগ করা শুরু করার আগে প্রতিটি মডিউলটিতে এই সূচনাটি সম্পাদন করি। প্রকল্পের সমস্ত লগইন করে একই সেটিংস পুনরায় ব্যবহার করা যেতে পারে এমন জায়গায় একবারে এই সূচনাটি করা কি সম্ভব?
package/__init__.py
। এটি আপনার if __name__ == '__main__'
কোড রাখার জায়গাটি সাধারণত নয় । এছাড়াও, প্রোস্টের উদাহরণ দেখে মনে হচ্ছে এটি কনফিগার কোডটিকে আমদানিতে নিঃশর্তভাবে কল করবে, যা আমার কাছে ঠিক দেখাচ্ছে না। সাধারণত, লগিং কনফিগার কোডটি এক জায়গায় করা উচিত এবং আপনি যখন____ আমদানি করবেন তখন ব্যতীত আমদানির পার্শ্ব-প্রতিক্রিয়া হিসাবে ঘটবে না।
if __name__ == '__main__'
? (এটি যদি হয় তবে তা স্পষ্টভাবে উল্লেখ করা হয়নি)
fileConfig
লগিং করা প্রতিটি মডিউলে আপনাকে কল করতে হবে না , যদি না আপনিif __name__ == '__main__'
সমস্তটিতে যুক্তি না রেখে থাকেন। প্যাকেজটি একটি লাইব্রেরি হলে প্রোস্টের উত্তরটি অনুশীলন করা ভাল নয়, যদিও এটি আপনার পক্ষে কাজ করে - একটি যুক্ত করা ছাড়া লাইব্রেরি প্যাকেজে লগিং কনফিগার করা উচিত নয়NullHandler
।