简单的将日志打印到屏幕

import logging

logging.debug('debug message')

logging.info('info message')

logging.warning('warning message')

logging.error('error message')

logging.critical('critical message')

输出:

WARNING:root:warning message

ERROR:root:error message

CRITICAL:root:critical message

可见,默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG ),默认日志格式如上

灵活配置日志级别,日志格式,输出位置 (将日志写入文件)

import logging

logging.basicConfig(filename='myapp.log',

filemode='w',

level=logging.CRITICAL,

format=('%(asctime)s %(filename)s %(levelname)s %(message)s'),

datefmt="%m/%d/%Y %H:%M:%S %p")

logging.debug("debug message")

logging.info("info message")

logging.warning("warning message")

logging.error("error message")

logging.critical("critical message")

查看文件:

04/06/2017 11:16:35 AM test13.py CRITICAL critical message

可见在logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有

filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。

filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。

format:指定handler使用的日志显示格式。

datefmt:指定日期时间格式。

level:设置rootlogger(后边会讲解具体概念)的日志级别

format参数中可能用到的格式化串:

%(name)s Logger的名字

%(levelno)s 数字形式的日志级别

%(levelname)s 文本形式的日志级别

%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有

%(filename)s 调用日志输出函数的模块的文件名

%(module)s 调用日志输出函数的模块名

%(funcName)s 调用日志输出函数的函数名

%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒

%(message)s用户输出的消息

注意:basicConfig是单实例模式,创建时候只有一个logger对象。还是使用下面的方法吧...

同时输出至文件和屏幕

Python 使用logging模块记录日志涉及四个主要类,使用官方文档中的概括最为合适:

logger:提供日志接口,供应用代码使用。logger最长用的操作有两类:配置和发送日志消息。可以通过logging.getLogger(name)获取logger对象,如果不指定name则返回root对象,多次使用相同的name调用getLogger方法返回同一个logger对象。

handler:将日志记录(log record)发送到合适的目的地(destination),比如文件,socket等。一个logger对象可以通过addHandler方法添加0到多个handler,每个handler又可以定义不同日志级别,以实现日志分级过滤显示。

filter:提供一种优雅的方式决定一个日志记录是否发送到handler。

formatter:指定日志记录输出的具体格式。formatter的构造方法需要两个参数:消息的格式字符串和日期字符串,这两个参数都是可选的。

import logging

#设置输出流

ch=logging.StreamHandler() #屏幕输出

ch.setLevel(logging.ERROR) #屏幕输出级别

fh=logging.FileHandler("test_log",'w') #文件输出,默认为‘a’

fh.setLevel(logging.DEBUG)

#设置输出流格式并将格式加入到输出流

ch_formatter=logging.Formatter("%(asctime)s %(filename)s %(message)s")

fh_formatter=logging.Formatter('%(asctime)s-%(name)s-%(message)s')

ch.setFormatter(ch_formatter) #添加到输出流

fh.setFormatter(fh_formatter) #添加到输出流

#创建一个log并添加定义的输出流

log=logging.getLogger("mylog")

log.setLevel(logging.WARNING) #全局设置,logging.INFO将不会被打印

log.addHandler(ch)

log.addHandler(fh)

log.debug('debugmessage')

log.info('infomessage')

log.warning('warningmessage')

log.error('error message')

log.critical('critical message')

屏幕输出:

2017-04-06 12:07:17,911 logging多输出.py error message

2017-04-06 12:07:17,911 logging多输出.py critical message

文件test_log输出:

2017-04-06 12:07:17,911-mylog-warningmessage

2017-04-06 12:07:17,911-mylog-error message

2017-04-06 12:07:17,911-mylog-critical message

文件日志自动截断

import logging,time

from logging import handlers

#根据文件大小或时间间隔来截断文件

# fh=handlers.RotatingFileHandle(filename='rotatingfile_log',maxBytes=10,backupCount=3,encoding='utf-8')

fh=handlers.TimedRotatingFileHandler(filename='rotatingfile_log',when='s',

interval=5,backupCount=3,encoding='utf-8')

# formatter=logging.Formatter('%(asctime)s %(filename)s %(message)s')

formatter=logging.Formatter(fmt='%(asctime)s %(filename)s %(message)s',datefmt='%Y-%m-%d %H:%M:%S')

fh.setFormatter(formatter)

fh.setLevel(logging.DEBUG)

logger=logging.getLogger('test_again')

logger.addHandler(fh)

logger.debug("123")

time.sleep(2)

logger.info("456")

time.sleep(2)

logger.warning("789")

time.sleep(2)

logger.error("abc")

time.sleep(2)

logger.critical("000")

时间截断的when参数是一个字符串。表示时间间隔,不区分大小写

S秒 M分 H小时 D天

midnight每天凌晨

python 日志输出变量_Python日志输出相关推荐

  1. python 日志输出变量_python中记录打印的log模块logging的用法实例

    日志基础教程 日志是对软件执行时所发生事件的一种追踪方式.软件开发人员对他们的代码添加日志调用,借此来指示某事件的发生.一个事件通过一些包含变量数据的描述信息来描述(比如:每个事件发生时的数据都是不同 ...

  2. python如何控制输出格式_python格式化输出

    python格式化输出 一.格式化输出三种方式 在写程序的过程中难免要得,输出有有特色的格式来,没有特色,谁还会耐得下去看呢,恐怕自己都写小烦躁,不要不要得,毕竟人就是个神奇的小动物嘛,所以说不得不提 ...

  3. 用python输出数组_Python 中输出数组中的全部元素

    只需要在开头加上一句即可 import numpy as np np.set_printoptions(threshold=np.inf) Python 输出到文本中 参考:https://blog. ...

  4. python定义一个变量_Python新手上车3:Python第一个程序和变量

    第一个程序 上节内容我们提到了如何安装Python 以及安装配置VSCode,这节内容我们继续介绍第一个程序的建立: 1.在VS的左上角点击建立一个新的程序,命名为 python_0301_code. ...

  5. python 有趣的变量_Python进阶之路 3.2有趣的赋值操作

    3.2 有趣的赋值操作 赋值操作是再简单不过了,在前面的章节也多次使用了赋值操作.不过Python语言中的赋值操作要有趣得多.例如,可以同时将多个值赋给多个变量. x,y,z = 1,2,3 prin ...

  6. python设置环境变量_Python设置环境变量

    python设置环境变量 We can set an environment variable in Python using os module. Python os module environ ...

  7. python局部静态变量_python如何设置静态变量

    众所周知,Python语言并不支持静态变量,比如下面这样一个应用场景: void foo() { static int count = 0; count ++; } 在Python中无法自然实现这个功 ...

  8. python 文件路径 变量_python路径变量

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 开发准备cas 的 python sdk 包含了用于访问和操作 cas 的所有 ...

  9. python清除所有变量_python清除变量

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 否则,抛出异常(具体参见异常说明)删除文件库方法签名:delete()方法说明: ...

  10. python怎样创建变量_Python变量的创建

    Python 是一种动态类型语言,因此变量不需要显式地声明其数据类型.在Python 中,所有的数据都被抽象为"对象",变量通过赋值语句来指向对象,变量赋值的过程就是将变量与对象关 ...

最新文章

  1. pta两个有序链表的合并_21. 合并两个有序链表
  2. Codeforces Round #297 (Div. 2)E. Anya and Cubes 折半搜索
  3. java hbase创建_hadoop组件介绍及python 连接Hbase
  4. 《数据分析实战 基于EXCEL和SPSS系列工具的实践》一3.4 数据量太大了怎么办
  5. python奇数和_请问python如何判断奇偶数?
  6. 让机器学会看图说话:Image Caption任务最新综述
  7. 调用支付宝PHP接口API实现在线即时支付功能(UTF-8编码)
  8. mysql 8.0.22_最新版MySQL 8.0.22下载安装超详细教程(Windows 64位)
  9. BBQ Hard dp + 组合数学 + 建模
  10. MSP430F5529 DriverLib 库函数学习笔记(八)模数转换模块(ADC12)
  11. .net VS Java 到底谁吃香?
  12. java me教程_Java ME基础教程
  13. Word文档打不开怎么办
  14. matlab液压仿真实例,基于MATLAB-simulink的液压系统动态仿真.pptx
  15. 化学式中间的点怎么打?
  16. php 路由修改密码,TPLINK路由器如何修改管理密码和无线密码)
  17. 整合springmvc+mybatis+veloctiy三
  18. VMware宿主机与虚拟机之间的文件夹相互共享(看图操作)
  19. 迁移学习在医学影像学中的应用
  20. 微信公众号采集 php,如何采集微信公众号历史消息页

热门文章

  1. 谈谈Pod在微服务中的运用
  2. Android 蓝牙扫描
  3. Android自定义View研究(六)--View中的原点坐标相关问题
  4. 28.MySQL Variables
  5. 24. flock() 函数
  6. 60. cache
  7. saetv2.ex.class.php,curl out of memory window下PHP调用curl报内存不够
  8. Linux Mysql5.6安装
  9. Migrations有两个文件迁移数据的方法
  10. Xcode模拟器simulators安装