1、打印到控制台

# -*- coding: UTF-8 -*-

import logging

def logFileTest():
logging.debug('This is debug')
logging.warning('This is warning message')
logging.info('This is info') logFileTest()

  运行结果

WARNING:root:This is warning message

  PS : 只有 logging.warning() 能打印输出到控制台,因为默认设置的等级是 warning

2、配置默认等级后,打印到控制台

# -*- coding: UTF-8 -*-

import logging

def logBasicConfig():
logging.basicConfig(level=logging.DEBUG)
logging.debug('This is debug')
logging.warning('This is warning message')
logging.info('This is info') logBasicConfig()

  运行结果

DEBUG:root:This is debug
WARNING:root:This is warning message
INFO:root:This is info

  PS : 日志级别: debug < info < warning < error < critical

3、保存到日志文件中,通过 logging.basicConfig() 设置

# -*- coding: UTF-8 -*-

import logging

def saveToLogFile():
logging.basicConfig(
filename = 'saveMessage.log', #保存文件路径
filemode = 'a',#保存方式,有 w 和 a 模式,默认不写为追加 a 模式
format = '%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s' #日志格式
)
logging.warning('This is warning') saveToLogFile()

  运行结果

2019-08-27 14:00:58,463 - D:\E_DISK\product\eclipse\logFileDemo\src\com\logFileDemo.py[line:24] - WARNING: This is warning

  PS : 这是 saveMessage.log 文件中生成的日志信息

       如果在 logging.basicConfig() 设置 filename 和 filemode,则只会保存 log 到文件,不会输出到控制台

4、实现info信息记录到文件,error信息记录文件并在屏幕上输出,且实现日志回滚

保存10个文件,每个文件大小为1024*1024

需要注意该函数在一个工程中只能调用一次,否则写入信息会增加,比如调用两次该函数后log.info('aaa')文件中会有两次

因此我写了一个log = LogConfig.log()其他类使用时,用该log就行,有点像单例模式

import logging.handlers
import os class LogConfig:
def __init__(self):
pass # DEBUG,INFO,NOTICE,WARNING,ERROR,CRITICAL,ALERT,EMERGENCY
# only call one @staticmethod
def log(log_name='logs/log.log', log_flag=True,
max_bytes=1024 * 1024, backup_count=10): path = os.path.split(log_name)[0]
if not os.path.isdir(path) and path != '':
os.makedirs(path)
log_handler = logging.getLogger(log_name)
if log_flag:
# write log above info
log_handler.setLevel(logging.INFO)
else:
# write log above error
log_handler.setLevel(logging.ERROR)
stream_handler = logging.StreamHandler()
# is or not show to cmd console
stream_handler.setLevel(logging.WARN)
log_handler.addHandler(stream_handler) rollback_handler = logging.handlers.RotatingFileHandler(log_name,
maxBytes=max_bytes,
backupCount=backup_count)
log_format = logging.Formatter(
'[%(asctime)s][%(levelname)s]%(message)s')
rollback_handler.setFormatter(log_format)
rollback_handler.setLevel(logging.INFO)
log_handler.addHandler(rollback_handler)
return log_handler log = LogConfig.log() if __name__ == '__main__':
log.info('')
log.error('')

最新文章

  1. java web 之客户关系管理系统
  2. 微信小程序开发工具使用与设计规范(二)
  3. jquery写简单的div切换
  4. linux一些基本命令
  5. Python之路,Day9, 进程、线程、协程篇
  6. IOS --- OC与Swift混编
  7. 将一列包含多个ID拆分多行
  8. js内存泄漏
  9. charles 常用设置
  10. phpcms v9联动菜单实现筛选
  11. WIN7 64位系统安装JDK并配置环境变量
  12. 集合ArrayList案例
  13. 最完整的历史记录hadoop
  14. [BZOJ3038]上帝造题的七分钟2 树状数组+并查集
  15. 9、ABPZero系列教程之拼多多卖家工具 拼团提醒类库封装
  16. Chipmunk碰撞形状:cpShape
  17. 解读经典《C#高级编程》最全泛型协变逆变解读 页127-131.章4
  18. Javascript - ExtJs - 整合百度文章编辑器
  19. 在HTML中使用object和embed标签插入视频
  20. VS 2013 with update 5 编译程序出现A task was cancel

热门文章

  1. [总结]RMQ问题&amp;ST算法
  2. 学习Salesforce | 带你解锁Superbadge的真正作用
  3. Daily Scrum 1/4/2015
  4. Cobalt Strike系列教程第七章:提权与横向移动
  5. 微信小程序 —搜索框
  6. deepin右键发送博客
  7. IO多路复用小故事
  8. [源码分析] 带你梳理 Flink SQL / Table API内部执行流程
  9. PostMan接口测试(很全面的接口测试教程)
  10. 新建MapReduce项目