发现python里面扩展了日志打印功能。感觉比java自带的还好,和log4j很类似。
下面总结下其用法。先说一种不用配置文件的:
<log.py>
1
# -*- coding: gb2312 -*-
2
import logging
3![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
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![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
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![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
16![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
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![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
24![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
25
def getLogging(name):
26
return logging.getLogger(name)
<test.py>
import log
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
testlog = log.getLogging('test')
testlog.error( "~~~~~~~~~~~~~~test1.")
testlog.info( "~~~~~~~~~~~~~~test2." )
testlog.exception( "~~~~~~~~~~~~~~~~~~~~~~~~~test3.")
用过log4j的人不会陌生这种用法。如果你对log4j有疑惑,或者想了解请在本人blog内查找关于log4j的文章。有详细介绍。这里不再赘述。
第二种使用配置文件的:
# logging.conf
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
[loggers]
keys=root,example
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
[handlers]
keys=consoleHandler,rotateFileHandler
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
[formatters]
keys=simpleFormatter
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
[formatter_simpleFormatter]
format=[%(asctime)s](%(levelname)s)%(name)s : %(message)s
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
[logger_root]
level=DEBUG
handlers=consoleHandler,rotateFileHandler
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
[logger_example]
level=DEBUG
handlers=consoleHandler,rotateFileHandler
qualname=example
propagate=0
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
[handler_rotateFileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('test.log', 'a', 10000, 9)
<test2.py>
import logging
import logging.config
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
logging.config.fileConfig("logger.conf")
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
#create logger
logger = logging.getLogger("example")
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
#"application" code
logger.debug("debug message")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
logger.critical("critical message")
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
logHello = logging.getLogger("hello")
logHello.info("Hello world!")
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
其中值得注意的是args的含义。