发现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)
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
log
testlog = log.getLogging( ' test ' )
testlog.error( " ~~~~~~~~~~~~~~test1. " )
testlog.info( " ~~~~~~~~~~~~~~test2. " )
testlog.exception( " ~~~~~~~~~~~~~~~~~~~~~~~~~test3. " )
testlog = 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 = DEBUG
handlers = consoleHandler,rotateFileHandler
[logger_example]
level = DEBUG
handlers = consoleHandler,rotateFileHandler
qualname = example
propagate = 0
[handler_consoleHandler]
class = StreamHandler
level = DEBUG
formatter = simpleFormatter
args = (sys.stdout,)
[handler_rotateFileHandler]
class = handlers.RotatingFileHandler
level = DEBUG
formatter = simpleFormatter
args = ( ' test.log ' , ' a ' , 10000 , 9 )
[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 = DEBUG
handlers = consoleHandler,rotateFileHandler
[logger_example]
level = DEBUG
handlers = consoleHandler,rotateFileHandler
qualname = example
propagate = 0
[handler_consoleHandler]
class = StreamHandler
level = DEBUG
formatter = simpleFormatter
args = (sys.stdout,)
[handler_rotateFileHandler]
class = handlers.RotatingFileHandler
level = DEBUG
formatter = simpleFormatter
args = ( ' test.log ' , ' a ' , 10000 , 9 )
<test2.py>
import
logging
import logging.config
logging.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! " )
import logging.config
logging.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! " )
其中值得注意的是args的含义。