আমি সম্প্রতি খুব হালকা ওজনে লগিং ক্লাস চেয়েছিলাম যা লগিং স্তরের উপর নির্ভর করে বিভিন্ন পরিমাণে আউটপুট আউটপুট তৈরি করতে পারে যা প্রোগ্রামগতভাবে সেট করা যায়। তবে আমি যখনই কোনও ডিবাগিং বার্তা বা ত্রুটি বা সতর্কবার্তা আউটপুট করতে চেয়েছি ক্লাসটি ইনস্ট্যান্ট করতে চাই নি। তবে আমি এই লগিং সুবিধার কার্যকারিতাটি সজ্জিত করে কোনও গ্লোবাল ঘোষণা না করে এটিকে পুনরায় ব্যবহারযোগ্য করে তুলতে চাইছিলাম।
সুতরাং আমি এটি @classmethod
অর্জনের জন্য ক্লাস ভেরিয়েবল এবং ডেকোরেটর ব্যবহার করেছি ।
আমার সাধারণ লগিং ক্লাসের সাথে, আমি নিম্নলিখিতগুলি করতে পারি:
Logger._level = Logger.DEBUG
তারপরে, আমার কোডে, আমি যদি একগুচ্ছ ডিবাগিং তথ্য বের করতে চাই, আমাকে কেবল কোড করতে হয়েছিল
Logger.debug( "this is some annoying message I only want to see while debugging" )
ত্রুটিগুলি সহ করা যেতে পারে
Logger.error( "Wow, something really awful happened." )
"উত্পাদন" পরিবেশে, আমি নির্দিষ্ট করতে পারি
Logger._level = Logger.ERROR
এবং এখন, কেবল ত্রুটি বার্তা আউটপুট হবে। ডিবাগ বার্তা মুদ্রণ করা হবে না।
এখানে আমার ক্লাস:
class Logger :
''' Handles logging of debugging and error messages. '''
DEBUG = 5
INFO = 4
WARN = 3
ERROR = 2
FATAL = 1
_level = DEBUG
def __init__( self ) :
Logger._level = Logger.DEBUG
@classmethod
def isLevel( cls, level ) :
return cls._level >= level
@classmethod
def debug( cls, message ) :
if cls.isLevel( Logger.DEBUG ) :
print "DEBUG: " + message
@classmethod
def info( cls, message ) :
if cls.isLevel( Logger.INFO ) :
print "INFO : " + message
@classmethod
def warn( cls, message ) :
if cls.isLevel( Logger.WARN ) :
print "WARN : " + message
@classmethod
def error( cls, message ) :
if cls.isLevel( Logger.ERROR ) :
print "ERROR: " + message
@classmethod
def fatal( cls, message ) :
if cls.isLevel( Logger.FATAL ) :
print "FATAL: " + message
এবং কিছু কোড যা এটির সামান্য পরীক্ষা করে:
def logAll() :
Logger.debug( "This is a Debug message." )
Logger.info ( "This is a Info message." )
Logger.warn ( "This is a Warn message." )
Logger.error( "This is a Error message." )
Logger.fatal( "This is a Fatal message." )
if __name__ == '__main__' :
print "Should see all DEBUG and higher"
Logger._level = Logger.DEBUG
logAll()
print "Should see all ERROR and higher"
Logger._level = Logger.ERROR
logAll()