模块logging

    logging模块的主要功能是记录软件调试、操作过程中的各种日志。
默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG),
默认的日志格式为日志级别:Logger名称:用户输出消息。
logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,
可用参数有: filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。
filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
format:指定handler使用的日志显示格式。
datefmt:指定日期时间格式。
level:设置rootlogger(后边会讲解具体概念)的日志级别
stream:用指定的stream创建StreamHandler。
可以指定输出到sys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),默认
为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。 format参数中可能用到的格式化串:
%(name)s Logger的名字
%(levelno)s 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。
逗号后面的是毫秒
%(thread)d 线程ID。可能没有
%(threadName)s 线程名。可能没有
%(process)d 进程ID。可能没有
%(message)s用户输出的消息 # 修改日志记录级别
logging.basicConfig(
level=logging.DEBUG,# 级别要大写
) # 函数版日志模板
import logging
logging.basicConfig(
# level=logging.WARNING, # 默认日志级别
level=logging.DEBUG, # 修改日志级别
format = '%(asctime)s - %(name)s - [%(lineno)d] - %(message)s',
filename = "test.log", # 日志文件名
filemode = "w" # 日志文件操作模式
)
logging.DEBUG("这是调试级别") # debug调试级别,对应表示参数10
logging.INFO("这是信息级别") # 日常信息级别,对应表示参数20
logging.WARNING("这是警告级别") # 警告级别,对应表示参数30
logging.ERROR("这是错误级别") # 错误级别,对应表示参数40
logging.CRITICAL("这是严重级别") # 严重级别,对应表示参数50 # 结果为:
2019-01-16 18:23:56,605 - root - [11] - 这是调试级别
2019-01-16 18:23:56,605 - root - [12] - 这是信息级别
2019-01-16 18:23:56,606 - root - [13] - 这是警告级别
2019-01-16 18:23:56,606 - root - [14] - 这是错误级别
2019-01-16 18:23:56,606 - root - [15] - 这是严重级别 1、format = '%(asctime)s - %(name)s - [%(lineno)d] - %(message)s'
# 日志时间 操作人 运行行数 提示日志信息
2、当前配置,写到文件和打印到屏幕,只能二选一
3、文件写入的默认编码方式是GBK格式,不支持修改 # 自定义版本
import logging
logger = logging.getLogger("操作日志")#获取一个新的日志
formatter = logging.Formatter('%(asctime)s - %(name)s - [%(lineno)d] - %(message)s')
#定义一个模板 ch = logging.StreamHandler()#生成一个屏幕流
fh = logging.FileHandler("test.log","a","utf-8")#生成一个文件流 ch.setFormatter(formatter)#把定义的模板添加给屏幕流
fh.setFormatter(formatter)#把定义的模板添加给文件流 logger.setLevel(logging.DEBUG)#更改日志记录级别 logger.addHandler(ch)#将以屏幕流方式输出日志
logger.addHandler(fh)#将以文件流方式输出日志 logger.debug("这是调试级别")
logger.info("这是信息级别")
logger.warning("这是警告级别")
logger.error("这是错误级别")
logger.critical("这是严重级别") ###########也可以单独为其他角色定制个性化的模板来分开展示########
# 定制一个给领导的日志文件流模板
boss_formatter = logging.Formatter('%(asctime)s - %(message)s') # 文件流写到对应的文件路径
boos = logging.FileHandler("boss.log","a","utf-8") # 把定义的模板添加给领导文件流
boss.setFormatter(boss_formatter) #将领导文件流加入日志绑定
logger.addHandler(boos) 模块random import random
print(random.random()) # 0-1之间的小数
print(random.uniform(1,5)) # 1-5之间的小数 print(random.randint(1,36)) # 随机整数
print(random.randrange(1,10,2)) # randrange()指定范围,仅取奇数
print(random.randrange(0,10,2)) # randrange()指定范围,仅取偶数 import random
lst = [12,3,4,5,6,7]
# 随机取列表中的元素
print(lst[random.randrange(len(lst))]) # 随机取列表的下标,再取元素
print(random.choice(lst)) # 简单方法,直接取 # 随机取列表中的2个元素
print(random.choice(lst),random.choice(lst)) # 会存在重复
print(random.choices(lst,k=2)) # 可以出现多个,但是容易重复
print(random.sample(lst,k=3)) # 可以出现多个,不会出现重复
# 同时,如果列表中存在列表或者其他对象的元素,也会整体取到,不会打散 # 顺序打散(洗牌)
import random
lst = [12,3,4,5,6,7]
random.shuffle(lst) # 顺序打乱 洗牌
print(lst)
# 在此,集合已经不适用,集合已经序列化。 # 验证码,随机大写字母
import random
print(chr(random.randrange(65,91))) # 先随机字母的ASCII码,再取字母 # 生成随机验证码
import random​
def v_code():​
code = ''
for i in range(5):​
num=random.randint(0,9)
alf=chr(random.randint(65,90))
add=random.choice([num,alf])
code="".join([code,str(add)])​
return code

print(v_code())

模块 logging random的更多相关文章

  1. python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

    python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess ...

  2. 常用模块(collections模块,时间模块,random模块,os模块,sys模块,序列化模块,re模块,hashlib模块,configparser模块,logging模块)

    认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的 ...

  3. python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...

  4. Python标准模块--logging

    1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...

  5. 日志模块logging使用心得

    在应用程序使用中,日志输出对应用维护人员.开发人员判断程序的问题起重要作用. 那么在python中如何定义程序的日志输出? 推荐使用日志模块logging 需求:实现日志内容输出在文件中和控制器中 i ...

  6. python日志模块logging

    python日志模块logging   1. 基础用法 python提供了一个标准的日志接口,就是logging模块.日志级别有DEBUG.INFO.WARNING.ERROR.CRITICAL五种( ...

  7. Python之数据加密与解密及相关操作(hashlib模块、hmac模块、random模块、base64模块、pycrypto模块)

    本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...

  8. Python 日志模块logging

    logging模块: logging是一个日志记录模块,可以记录我们日常的操作. logging日志文件写入默认是gbk编码格式的,所以在查看时需要使用gbk的解码方式打开. logging日志等级: ...

  9. python模块之random

    python的随机数模块为random模块,可以产生随机的整数或浮点数.但是这是伪随机数,python解释器会维护一些种子数,然后根据算法算出随机数.linux维护了一个熵池,这个熵池收集噪音的信息, ...

随机推荐

  1. dinoql 支持自定义resovler了

    dinoql 当前版本0.4.0 支持自定义reovler 了,使用也比较简单 环境准备 初始化 yarn init -y 添加依赖 yarn add dinoql graphql-tag packa ...

  2. 10-ESP8266 SDK开发基础入门篇--上位机通过串口控制ESP8266灯亮灭

    https://www.cnblogs.com/yangfengwu/p/11087618.html 其实这一节就是对上三节的综合测试 https://www.cnblogs.com/yangfeng ...

  3. MySQL limit 分页查询优化(百万级优化)

    1)简单的查询分页:分每页5条 limit [offset],[rows] ,10; 2)建立id索引:查询索引id ,) limit ; 3)使用 between and 语句分页效率快N倍 ; 4 ...

  4. linux下将终端的输入存入文件中

    代码很简单: #include <stdlib.h> #include <fcntl.h> #include <stdio.h> #include <unis ...

  5. MATLAB 可以画的各种类型的图总结

    MATLAB® 提供了各种可用来绘制数据图的函数.下表对常见的图形函数进行了分类和说明. 线图 数据分布图 离散数据图 极坐标图 等高线图 向量场 plot area stairs polarplot ...

  6. 大数据应用期末总评Hadoop综合大作业

    作业要求来源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3339 1.将爬虫大作业产生的csv文件上传到HDFS 此次作业选取的 ...

  7. 第09组 Beta冲刺(3/4)

    队名:软工9组 组长博客:https://www.cnblogs.com/cmlei/ 作业博客:https://edu.cnblogs.com/campus/fzu/SoftwareEngineer ...

  8. IDEA2019.2.1中文乱码解决

    写在前面 太晚了, 长话短说, idea更新到2019.2.1, 项目任何地方输入中文都是乱码, 修改编码UTF-8依然如此.参考https://blog.csdn.net/chenjk10/arti ...

  9. 已知X,Y独立,那么X^2与Y也独立

    考虑离散情况,  P{X^2=k} => P{X=sqrt(k)} 由X,Y独立可知, P{X=Sqrt(k}  | Y=y} =P{X=Sqrt(x)}, P{X^2=k | Y=y} =P{ ...

  10. JAVA微信开发-如何保存包含特殊字符的微信昵称

    我们在做微信开发的时候,有一个很重要的就是通过openid获取用户的详细信息,包含昵称,头像,省,市,区的信息,但是现在移动时代,很多人追求个性,在名字当中大量使用火星文或者表情符.(本人实际测试过一 ...