发现python里面扩展了日志打印功能。感觉比java自带的还好,和log4j很类似。
下面总结下其用法。先说一种不用配置文件的:<log.py> 1 # -*- coding: gb2312 -*- 2 import logging 3 4 logging.basicConfig(level = logging.INFO, 5 format = ' %(asctime)s %(name)-12s %(levelname)-8s %(message)s ' , 6 datefmt = ' %m-%d %H:%M ' , 7 filename = ' ./AutoUpdate.log ' , 8 filemode = ' w ' ) 9 10 console = logging.StreamHandler() 11 console.setLevel(logging.INFO) 12 formatter = logging.Formatter( ' %(name)-12s: %(levelname)-8s %(message)s ' ) 13 console.setFormatter(formatter) 14 logging.getLogger( '' ).addHandler(console) 15 16 17 # # 18 # console = logging.StreamHandler() 19 # console = setLevel(logging.DEBUG) 20 # formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') 21 # console.setFormatter(formatter) 22 # logging.getLogger('').addHandler(console) 23 24 25 def getLogging(name): 26 return logging.getLogger(name)
<test.py> import logtestlog = log.getLogging( ' test ' )testlog.error( " ~~~~~~~~~~~~~~test1. " )testlog.info( " ~~~~~~~~~~~~~~test2. " )testlog.exception( " ~~~~~~~~~~~~~~~~~~~~~~~~~test3. " )
用过log4j的人不会陌生这种用法。如果你对log4j有疑惑,或者想了解请在本人blog内查找关于log4j的文章。有详细介绍。这里不再赘述。第二种使用配置文件的: # logging.conf [loggers]keys = root,example[handlers]keys = consoleHandler,rotateFileHandler[formatters]keys = simpleFormatter[formatter_simpleFormatter]format = [ % (asctime)s]( % (levelname)s) % (name)s : % (message)s[logger_root]level = DEBUGhandlers = consoleHandler,rotateFileHandler[logger_example]level = DEBUGhandlers = consoleHandler,rotateFileHandlerqualname = examplepropagate = 0[handler_consoleHandler] class = StreamHandlerlevel = DEBUGformatter = simpleFormatterargs = (sys.stdout,)[handler_rotateFileHandler] class = handlers.RotatingFileHandlerlevel = DEBUGformatter = simpleFormatterargs = ( ' test.log ' , ' a ' , 10000 , 9 )
<test2.py> import logging import logging.configlogging.config.fileConfig( " logger.conf " ) # create logger logger = logging.getLogger( " example " ) # "application" code logger.debug( " debug message " )logger.info( " info message " )logger.warn( " warn message " )logger.error( " error message " )logger.critical( " critical message " )logHello = logging.getLogger( " hello " )logHello.info( " Hello world! " )