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('')

Python 记录日志文件的更多相关文章

  1. python 记录日志logging

    在项目开发中,往往要记录日志文件.用python记录日志有两种方式: 1.利用python 自带的logging库,例如: # -*- coding: utf-8 -*- import osimpor ...

  2. Python读写文件

    Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...

  3. python计算文件的md5值

    前言 最近要开发一个基于python的合并文件夹/目录的程序,本来的想法是基于修改时间的比较,即判断文件有没有改变,比较两个文件的修改时间即可.这个想法在windows的pc端下测试没有问题. 但是当 ...

  4. python操作文件案例二则

    前言 python 对于文件及文件夹的操作. 涉及到 遍历文件夹下所有文件 ,文件的读写和操作 等等. 代码一 作用:查找文件夹下(包括子文件夹)下所有文件的名字,找出 名字中含有中文或者空格的文件 ...

  5. Python :open文件操作,配合read()使用!

    python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...

  6. python学习 文件操作

    一.python打开文件 #=====================python 文件打开方式 open()===================== # open(fileName,type) t ...

  7. Python之文件读写

    本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input ...

  8. python 遍历文件夹 文件

    python 遍历文件夹 文件   import os import os.path rootdir = "d:\data" # 指明被遍历的文件夹 for parent,dirn ...

  9. python检测文件的MD5值

    python检测文件的MD5值MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2.MD3和MD4发展而来.MD5算法的使用不需要支付任何版权 ...

随机推荐

  1. XML布局界面

    Android推荐使用XML布局文件来定义用户界面,而不是使用Java代码来开发用户界面,因此基础所有组件都提供了两种方式来控制组件的行为:1.在XML布局文件中通过XML属性进行控制:2.在Java ...

  2. C - Mind Control CodeForces - 1291C

    菜到家了,题意都读不懂. 题目大意: 总共有n个人和n个数字 n个人拍成一队,n个数字也是有顺序的 你排在第m个位置 按照顺序的每个人可以拿走这个序列中的第一个数字或者最后一个数字 你可以在所有人操作 ...

  3. U - Obtain a Permutation CodeForces - 1294E 思维

    题解: 注意每一列与每一列之间互不影响,所以贪心地求出没一列的最小操作值,然后累加起来. 怎么求没一列的最小值呢?维护一个数组same表示其中same[i]=j表示将该序列向上翻滚i次有j个元素归位, ...

  4. python调用小豆机器人实现自己的机器人!

    大家好,人工智能是不是很酷呢? 今天我们用python调用小豆机器人实现自己的机器人(可以结合往期的语音识别更酷哦) 好,废话不多说直接上代码 import requests i=input(&quo ...

  5. mysql datetime类型 按格式在页面输出

    mysql datetime类型对应java Date类型   java.util.Date类型会显示时间戳 java.sql.Date 只显示年月日不显示时分秒 只需要重写get方法 就能按格式输出 ...

  6. 深度剖析前端JavaScript中的原型(JS的对象原型)

          这张图片有点劝退了,哈哈哈~    通过原型机制,JavaScript 中的对象从其他对象继承功能特性:这种继承机制与经典的面向对象编程语言的继承机制不同.本文将探讨这些差别,解释原型链如 ...

  7. iview使用之怎样通过render函数在tabs组件中添加标签

    在实际项目开发中我们通常会遇到一些比较'新颖'的需求,而这时iview库里往往没有现成可用的组件示例,所以我们就需要自己动手翻阅IviewAPI进行自定义一些组件,也可以说是将iview库里的多种组件 ...

  8. java 递归及其经典应用--求阶乘、打印文件信息、计算斐波那契数列

    什么是递归 我先看下百度百科的解释: 一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的.用递归过程定义的函数,称为递归函数,例如连加.连乘及阶乘等.凡是递归的函数,都是可计算的,即 ...

  9. JS 获取浏览器

    function getInfo() { var s = ""; s = " 网页可见区域宽:" document.body.clientWidth; s = ...

  10. Async,Await 深入源码解析

    1.同步与异步 假设存在 IO事件A:请求网络资源 (完成耗时5s) IO事件B:查询数据库 (完成耗时5s) 情况一:线程1工人在发起A请求后,一直阻塞等待,在A响应返回结果后再接着处理事件B,那总 ...