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

代码:

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:保留日志文件的个数  

Python学习系列之logging模块的更多相关文章

  1. Python学习系列(六)(模块)

    Python学习系列(六)(模块) Python学习系列(五)(文件操作及其字典) 一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: ...

  2. Python学习系列(九)(IO与异常处理)

    Python学习系列(九)(IO与异常处理) Python学习系列(八)( 面向对象基础) 一,存储器 1,Python提供一个标准的模块,称为pickle,使用它既可以在一个文件中存储任何Pytho ...

  3. Python学习系列(七)( 数据库编程)

    Python学习系列(七)( 数据库编程)        Python学习系列(六)(模块) 一,MySQL-Python插件       Python里操作MySQL数据库,需要Python下安装访 ...

  4. Python学习系列(五)(文件操作及其字典)

    Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件      在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...

  5. Python学习系列(四)Python 入门语法规则2

    Python学习系列(四)Python 入门语法规则2 2017-4-3 09:18:04 编码和解码 Unicode.gbk,utf8之间的关系 2.对于py2.7, 如果utf8>gbk, ...

  6. Python学习系列(八)( 面向对象基础)

     Python学习系列(八)( 面向对象基础) Python学习系列(七)( 数据库编程) 一,面向对象 1,域:属于一个对象或类的变量.有两种类型,即实例变量—属于每个实例/类的对象:类变量—属于类 ...

  7. Python学习系列(四)(列表及其函数)

    Python学习系列(四)(列表及其函数) Python学习系列(一)(基础入门) Python学习系列(二)(基础知识) Python学习系列(三)(字符串) 一.基本概念 1,列表是什么?     ...

  8. Python学习系列(三)(字符串)

    Python学习系列(三)(字符串) Python学习系列(一)(基础入门) Python学习系列(二)(基础知识) 一个月没有更新博客了,最近工作上有点小忙,实在是没有坚持住,丢久又有感觉写的必要了 ...

  9. Python学习系列(二)(基础知识)

    Python基础语法 Python学习系列(一)(基础入门) 对于任何一门语言的学习,学语法是最枯燥无味的,但又不得不学,基础概念较繁琐,本文将不多涉及概念解释,用例子进行相关解析,适当与C语言对比, ...

随机推荐

  1. linux中进程亲和性绑定

    什么是绑核所谓绑核,其实就是设定某个进程/线程与某个CPU核的亲和力(affinity).设定以后,Linux调度器就会让这个进程/线程只在所绑定的核上面去运行.但并不是说该进程/线程就独占这个CPU ...

  2. 本地开发环境中部署已经写好的magento2.0项目

    环境:apache2.4.25+php7.0.16+mysql5.7 (注意版本搭配,详细可以看magento2.0官网看配置) apache最好使用80端口,host文件配置本地虚拟域名 php.i ...

  3. 译文 编写一个loader

    https://doc.webpack-china.org/contribute/writing-a-loader loader是一个导出了函数的node模块,当资源须要被这个loader所转换的时候 ...

  4. 【java】 field 和 variable 区别及相关术语解释

    Having said that, the remainder of this tutorial uses the following general guidelines when discussi ...

  5. Python的第二堂课(2)

    一.初探python print('Hello,靓仔!') 不得不说,这句话还是so real的(逃 二.Python中的变量 1.什么是变量?(what) 量:记录某种现实世界中事物的某种状态: 变 ...

  6. shell-note-1-基础篇

    1. Shell is a program written in C. It provides an interface for users to access to the service of o ...

  7. 基础训练 Huffuman树

    Huffuman树 /*解法一*/ #include<iostream> #include<queue> using namespace std; int main(){ pr ...

  8. HDU 2476 区间DP String painter

    题解 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm ...

  9. RN import ** from ** 用法

    1.import React, { Component } from 'react': 导入‘react’文件里export的一个默认的组件,将其命名为React以及Component这个非默认组件 ...

  10. 刷题总结——保留道路(ssoj)

    题目: 题目背景 161114-练习-DAY1-AHSDFZ T3 题目描述 很久很久以前有一个国家,这个国家有 N 个城市,城市由 1,2,3,…,,N 标号,城市间有 M 条双向道路,每条道路都有 ...