一、使用模块如下
1、logging:日志记录工具
2、logging.config:日志记录配置
3、logging.handlers:日志处理程序
二、向文件(终端)添加日志示例
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import logging
import logging.handlers as loghandlers
import logging.config as logconfig
def loginit(logname,logpath):
logger = logging.getLogger(logname)
logger.setLevel(logging.DEBUG)
# 创建处理器
# loghandler = logging.StreamHandler() # 日志信息输出到终端
# loghandler = logging.FileHandler(logpath) # 日志信息输出到文件
# loghandler = loghandlers.RotatingFileHandler(logpath,maxBytes=1024*1,backupCount=5) # 根据文件大小轮换日志文件
loghandler = loghandlers.TimedRotatingFileHandler(logpath,when='M',interval=1,backupCount=5) # 根据时间轮换日志文件
loghandler.setLevel(logging.DEBUG)
# 创建格式器(打印日志的时间-打印日志级别的名称-打印当前执行程序名-打印日志的当前函数-打印日志的当前行号: 日志信息)
logformatter = logging.Formatter('%(asctime)s-%(levelname)s-%(filename)s-%(funcName)s-%(lineno)d: %(message)s')
# 将格式器添加到处理器中
loghandler.setFormatter(logformatter)
# 将处理器添加到记录器中
logger.addHandler(loghandler)
return logger
def main(logger):
logger.info('123')
return
def test(logger):
logger.warning('456')
return
if __name__ == '__main__':
logger = loginit('simple_example','log.log')
main(logger)
test(logger)
三、向rsyslog添加日志
第一种实现:
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import logging
from logging.handlers import SysLogHandler
def loginit(logname):
logger = logging.getLogger(logname)
logger.setLevel(logging.DEBUG)
# 创建处理器
loghandler = SysLogHandler(facility=SysLogHandler.LOG_USER, address='/dev/log')
loghandler.setLevel(logging.DEBUG)
# 创建格式器(打印日志的时间-打印日志级别的名称-打印当前执行程序名-打印日志的当前函数-打印日志的当前行号: 日志信息)
logformatter = logging.Formatter('%(filename)s[%(process)d] %(levelname)s: %(message)s')
# 将格式器添加到处理器中
loghandler.setFormatter(logformatter)
# 将处理器添加到记录器中
logger.addHandler(loghandler)
return logger
def main(logger):
logger.info('123')
return
def test(logger):
logger.warning('456')
return
if __name__ == '__main__':
logger = loginit('simple_example')
main(logger)
test(logger)
第二种实现:
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import logging
from logging.handlers import SysLogHandler
def loginit(logname):
logger = logging.getLogger(logname)
logger.setLevel(logging.DEBUG)
# 创建处理器
loghandler = SysLogHandler(address=("127.0.0.1", 514))
loghandler.setLevel(logging.DEBUG)
# 创建格式器(打印日志的时间-打印日志级别的名称-打印当前执行程序名-打印日志的当前函数-打印日志的当前行号: 日志信息)
logformatter = logging.Formatter('%(filename)s[%(process)d] %(levelname)s: %(message)s')
# 将格式器添加到处理器中
loghandler.setFormatter(logformatter)
# 将处理器添加到记录器中
logger.addHandler(loghandler)
return logger
def main(logger):
logger.info('123')
return
def test(logger):
logger.warning('456')
return
if __name__ == '__main__':
logger = loginit('simple_example')
main(logger)
test(logger)
四、特别说明
详细信息参考官方手册