模块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. 数据库 Hash Join的定义,原理,算法,成本,模式和位图

    Hash Join只能用于相等连接,且只能在CBO优化器模式下.相对于nested loop join,hash join更适合处理大型结果集       Hash Join的执行计划第1个是hash ...

  2. uni-app input text-indent失效解决

    有两种方法去解决 第一种 input { padding-left: 10upt } 第二种 input { display: block }

  3. Spring重定向

    1.使用HttpServletResponse的sendRedirect()方法. 示例: @PostMapping("/user/product/id") public void ...

  4. _blocking_errnos = {errno.EAGAIN, errno.EWOULDBLOCK} pip

    python2.6 get-pip.py 报错下面的错误_blocking_errnos = {errno.EAGAIN, errno.EWOULDBLOCK} pip解决方案:# 1, 从官方git ...

  5. Ingress-nginx 部署使用

    Ingress-nginx 部署使用   一.Ingress 简介 在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的.为了使外部的应用能够访问集群内 ...

  6. 如何将整数转换为timespan

    可以使用From方法,这些方法可将Days / Days / minutes / seconds / milliseconds / ticks转换为TimeSpam格式,如下所示: TimeSpan ...

  7. win10 mount error 112 : host is down解决方案

    摘自:https://www.baidu.com/link?url=xZrOVRqR9gqGRq0esfVaivByR9E5-ixyAuKsQ_8Hiedl1sY6J7ezBlgSW3oe_X-koo ...

  8. sudo passwd root:没有相关指令

    在linux里如果想要修改密码,就输入这个指令,但是会出现没找到这个指令,是因为环境变量里没有passwd. 解决:查找passwd的位置,sudo find / -name passwd 然后进入p ...

  9. 使用draw.io桌面版代替visio制作流程图

    前言 draw.io是一款在github上的开源产品,由于需要构建在线文档,需要插入画图类型, 对比多款开源产品,最终选择了draw.io. draw.io图标资源非常的丰富,方便导入图标资源,基本上 ...

  10. 3秒钟unittest入门使用

    一:unittest跑起来 unittest使用,具体使用方式可以查看unittest官网,以下简单做个介绍,在工作中使用最多的 # 第一步: 创建unittest类,且一定要继承unittest.T ...