学习笔记(11月10日)--python常用内置模块的使用(logging, os, command)

四周五次课(11月10日)

一、 logging

日志是我们排查问题的关键利器,写好日志记录,当我们发生问题时,可以快速定位代码范围进行修改。Python给我们开发者们提供了好的日志模块,下面我们就来介绍一下logging模块:

首先,我们先来看一个例子:

import logging
logging.debug(‘This is debug message‘)
logging.info(‘This is info message‘)
logging.warning(‘This is warning message‘)

结果:

WARNING:root:This is warning message

解释:我们写了三句话,但是在屏幕上只打印了一个warning级别的日志,这个是怎么回事呢?

默认情况下,logging将日志打印到屏幕,日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,当然也可以自己定义日志级别。

● DEBUG:详细的信息,通常只出现在诊断问题上。

● INFO:确认一切按预期运行

● WARNING:一个警告,可能会有一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作

● ERROR:一个更严重的问题,软件没能执行一些功能

● CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行

而logging默认的日志级别是warning,一般基本上所有的程序都是这个级别,有助于我们排查问题,但是当发生问题,我们没法定位到问题,很多情况下我们需要把日志级别提升到debug级别,那又怎么办呢?

通过logging.basicConfig函数对日志的输出格式及方式做相关配置

现实工作中,往往我们是要把日志写在日志文件中的,那怎么做呢?看如下代码:

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‘, filename=‘myapp.log‘, filemode=‘w‘)
logger = logging.getLogger(__name__)
logging.debug(‘This is debug message‘)
logging.info(‘This is info message‘)
logging.warning(‘This is warning message‘)

结果:

在当前文件夹中新增了一个myapp.log文件,文件的内容如下:

2017/11/10 14:21:03 20171101.py[line:10] DEBUG This is debug message
2017/11/10 14:21:03 20171101.py[line:11] INFO This is info message
2017/11/10 14:21:03 20171101.py[line:12] WARNING This is warning message

解释:

主要是通过logging.basicConfig函数进行操作。

logging.basicConfig函数参数的用法:

level: 设置日志级别,默认为logging.WARNING

filename: 指定日志文件名。

filemode: 和file函数意义相同,指定日志文件的打开模式,‘w‘或‘a‘

format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:

%(levelname)s: 打印日志级别名称

%(filename)s: 打印当前执行程序名

%(funcName)s: 打印日志的当前函数

%(lineno)d:   打印日志的当前行号

%(asctime)s:  打印日志的时间

%(thread)d:   打印线程ID

%(process)d:  打印进程ID

%(message)s:  打印日志信息

datefmt: 指定时间格式,同time.strftime()

stream: 指定日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略

logging.getLogger([name]):创建一个日志对象:

返回一个logger实例,如果没有指定name,返回root logger。只要name相同,返回的logger实例都是同一个而且只有一个,即name和logger实例是一一对应的。这意味着,无需把logger实例在各个模块中传递。只要知道name,就能得到同一个logger实例。

logging.getLogger(__name__) 在上述实例中__name__就指的是__main__。

二、 os模块

三、 command模块

四、 sys模块

时间: 2024-11-10 00:43:22

学习笔记(11月10日)--python常用内置模块的使用(logging, os, command)的相关文章

Linux学习笔记4月10日任务

4月10日任务 11.6 MariaDB安装 11.7/11.8/11.9 Apache安装 扩展 apache dso https://yq.aliyun.com/articles/6298 apache apxshttp://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/programs/apxs.html apache工作模式 http://www.cnblogs.com/fnng/archive/2012/11/20/2779977.h

11月10日直播:EVE-NG模拟器入门和老司机心得分享,你来不来?

大家好. 今天要告诉你们一个好消息,本周六11月10号早上10点到11点. 我计划开一个直播和你们一起聊聊如何入门EVE-NG模拟器. 说起EVE-NG,相信很多人都多多少少听说过. 它和GNS3,以及思科的VIRL,Packet-tracer一样,均算是设备仿真一类的软件. 说白了就是模拟器. 但是EVE-NG相比GNS3,我个人认为使用体验和便捷程度更上一层楼. 所以从2017年开始,我就已经慢慢把自己的网络模拟器从GNS3迁移到EVE-NG. 因此我在写<老司机网络运维集锦>以及<

2014年11月10日android学习总结

一.线程 1.UI线程 a.Handler handler = new Handler(); Runnable runnable = new Runnable(){ public void run(){ } }; handler.post(runnable); b.Handler handler = new Handler(){ public void handlermessage(Message msg){ } }; handler.sendmessage(); 二.新线程 a.Thread

2019年11月10日统计学王菲

A1.一个数据文件包含下列数据,5个家庭没有汽车(编码为0);20个家庭拥有一辆汽车(编码为1);10个家庭拥有两辆车(编码为2).指出下列哪种统计量适用于描述该数据并计算出该统计量的值: A. 拥有汽车数的众数 B. 拥有汽车数的中位数 C. 拥有汽车数的方差 D.变异系数 B2.为了生成某个给定变量的总和(即“otal”),应该选用哪一个汇总统计量 A. mean B. sum C. median D.mode B3.假设有数据如图3-45所示,如果需要求出a.b.c这3个变量的均值,并且希

Java 学习计划 11月28日-12月1日

File类基本操作 在Linux中,一切皆文件,所以文件操作是基础. Java中提供File类来提供一些对文件的基本操作,面对一个新类,第一件事就是去看API文档 File类的API文档中对于文件的路径进行了说明 Linux或Unix下用'/' windows下用‘\': 在API的最后一行,有一句说明, Instances of the File class are immutable; that is, once created, the abstract pathname represen

11月10日上午ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库

1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处理页面的,处理页面只是操作数据库并且返回值,页面都是ajax处理的. ajax的写法: test.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR

11月10日下午 ajax做显示信息以后用ajax、Bootstrp做弹窗显示信息详情

1.用ajax做弹窗显示信息详情 nation.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <me

Linux学习笔记4月9日任务

11.1 LAMP架构介绍 11.2 MySQL.MariaDB介绍 11.3/11.4/11.5 MySQL安装 ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql运行后提示,需要安装其他包,如下图: 再次运行./scripts/mysql_install_db --user=mysql --datadir=/data/mysql, 复制# cp support-files/my-default.cnf /etc/my.c

Linux学习笔记4月12日任务

11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机 虚拟主机,实现一台服务器运行多个域名,多个网站: 设置两个域名网站abc.com和111.com,并创建网站首页: 测试网站#curl -x 192.168.133.130:80 abc.com abc.com是默认虚拟主机域名,不是定义的域名,就都会访问到此域名: 原文地址:http://blog.51cto.com/12059818/2105593