实例一:日志写进一个文件

代码:

import logging

logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s', #定义日志格式
datefmt='%Y-%m-%d %H:%M:%S %p', #定义asctime
filename='test.log', #定义日志文件
filemode='a') #定义写入模式,'a'是追加的意思 login():
while True:
try:
name = input('Input user name:')
password = int(input('Input password:')) #这里故意转成整型,触发异常
if name == 'andy' and password == 'nopasswd':
print('logging succeed!')
except ValueError as e:
logging.info(e) #这里写入日志
break if __name__ == '__main__':
login()  

format解释:

  • asctime:时间,按照datefmt定义的显示,2018-01-10 14:50:25
  • filename:报错的python文件名称
  • line:%(lineno)d:报错的行数
  • levelname:报错级别
  • message:报错的信息

测试:

[root@admin_bak shell]# python3.6  test_log.py
Input user name:asdasd
Input password:asdsad #这是输入字符串,触发异常  

查看日志

2018-01-10 11:54:40 AM test_log.py test_log.py[line:21] DEBUG invalid literal for int() with base 10: 'asdsad'  

实例二:实现每天一个日志文件

代码:

import time

import logging
import logging.handlers LOG_FILE = "ping.log" #设置日志文件名称
logger = logging.getLogger() #实例化logging
logger.setLevel(logging.INFO) #设置日志级别 #添加TimedRotatingFileHandler  
#定义一秒换一次log文件的handlers
#保留3个旧log文件
fh = logging.handlers.TimedRotatingFileHandler(LOG_FILE, when='D', interval=1, backupCount=10)
#定义asctime
datefmt = '%Y-%m-%d %H:%M:%S'
#定义日志格式
format_str = '%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s'
formatter = logging.Formatter(format_str, datefmt)
fh.setFormatter(formatter)
logger.addHandler(fh) while True:
time.sleep(0.1)
logging.info("test")

TimedRotatingFileHandler

TimedRotatingFileHandler(filename [,when [,interval [,backupCount]]])#需要传的参数

filename:日志文件

when:

"S":second

"M":minutes

"H":Hours

"D":Days

"W":week day (0=monday)

interval:是指等待多少个"when"时间后,logging会自动新建文件,比如when='S',interval=10,就是10个一秒后新建文件,也就是10秒,when='D',interval=1,就是一天一个文件

backupCount:保留日志文件的个数  

最新文章

  1. StarWind的安装配置
  2. 【bzoj4513】储能表【数位DP】
  3. InterBase数据库迁移到MySQL(数据导入)
  4. centos 安装haproxy 1.6.3
  5. Python爬虫--简单爬取图片
  6. Matlab数字信号处理
  7. IOS NSDate NSDateFormatter 导致相差8小时
  8. CLRS:Insert sort in in c
  9. uva 10976 Fractions Again(简单枚举)
  10. 如何选择版本控制系统之二---Git的研发应用场
  11. Android开发 Jar mismatch! Fix your dependencies的问题
  12. 网络协议,socket模块
  13. python对象的for迭代实现
  14. TensorFlow模型加载与保存
  15. [HNOI2005]狡猾的商人 ,神奇做法——贪心
  16. SQL Server2008 删除登录记录
  17. 初识IP基础分类、CIDR
  18. Oracle 12c新特性(For DBA)
  19. 记一个使用Client Object Model上传文件的小例子
  20. java之继承

热门文章

  1. GIMP如何创建layer masks,创建,删除,禁用,复制mask
  2. lnmp一键安装包 虚拟主机问题
  3. vim之替换命令
  4. 流程控制主while,for,python画金字塔,画9*9乘法表
  5. spring的自动装配,骚话@Autowired的底层工作原理
  6. f-Strings:一种改进Python格式字符串的新方法
  7. win10系统中virtualbox无法安装64位系统
  8. iphone丢了以后发现关机了怎么办?
  9. xtu数据结构 D. Necklace
  10. HDU-1829 A Bug's Life。并查集构造,与POJ1709异曲同工!