在python程序中添加日志功能
2019-06-13 本文已影响0人
你说你要一场
import logging
logging.basicConfig(level=logging.DEBUG,#控制台打印的日志级别
filename='new.log',
filemode='a',##模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志
#a是追加模式,默认如果不写的话,就是追加模式
format=
'%(asctime)s - %(levelname)s: %(message)s'
#日志格式
)
要打印信息的地方用 logging.info()
注意:
basicConfig里level设置没问题,大于等于它的都要输出。
但是当有log文件时,它就不再向终端打印了。
同时输出方法:
import logging
logging.basicConfig(format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s',
level=logging.INFO,filename='new2.log')
console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
logging.debug('debug 信息')
logging.info('info 信息')
logging.warning('warning 信息')
logging.error('error 信息')
logging.critical('critial 信息')
logger1 = logging.getLogger('myapp.area1')
logger2 = logging.getLogger('myapp.area2')
logger1.debug('Quick zephyrs blow, vexing daft Jim.')
logger1.info('How quickly daft jumping zebras vex.')
logger2.warning('Jail zesty vixen who grabbed pay from quack.')
logger2.error('The five boxing wizards jump quickly.')
终端效果:
h@h-B360M-D2VX-SI:~/models/公司项目/3.智能客服$ python3 test_logging.py
root : INFO info 信息
root : WARNING warning 信息
root : ERROR error 信息
root : CRITICAL critial 信息
myapp.area1 : INFO How quickly daft jumping zebras vex.
myapp.area2 : WARNING Jail zesty vixen who grabbed pay from quack.
myapp.area2 : ERROR The five boxing wizards jump quickly.
h@h-B360M-D2VX-SI:~/models/公司项目/3.智能客服$
log文件中的效果:
2019-06-13 19:14:31,883 - test_logging.py[line:11] - INFO: info 信息
2019-06-13 19:14:31,883 - test_logging.py[line:12] - WARNING: warning 信息
2019-06-13 19:14:31,883 - test_logging.py[line:13] - ERROR: error 信息
2019-06-13 19:14:31,883 - test_logging.py[line:14] - CRITICAL: critial 信息
2019-06-13 19:14:31,883 - test_logging.py[line:20] - INFO: How quickly daft jumping zebras vex.
2019-06-13 19:14:31,883 - test_logging.py[line:21] - WARNING: Jail zesty vixen who grabbed pay from quack.
2019-06-13 19:14:31,883 - test_logging.py[line:22] - ERROR: The five boxing wizards jump quickly.
可见在终端里还可以给每个日志加上模块。
简言之,加上
console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
就可以同时输出了。