1.最简单的用法

import logging

logging.error("hah")

logging.info("hah")

logging.debug("hah")

logging.warning("hah")

logging.critical("hah")

info,debug并不会显示,默认级别为30

级别debug(10)

级别info(20)

级别warning(30)

级别error(40)

级别critical(50)

2.自定义日志格式

import logging

日志基本设置

只能设置显示的信息格式,并不能设置日志级别和输出(屏幕或文件)

logging.basicConfig(format="%(levelno)s-%(asctime)s-%(message)s")

logging.error("hah")

logging.info("hah")

logging.debug("hah")

logging.warning("hah")

logging.critical("hah")

3.自定义日志

设置级别,之前两种方法都是warning级别以上输出

设置输出,之前两种方法都是输出到屏幕

四个重要组件

1.Logger 日志生成器 负责产生一条完整的日志

2.Filter 过滤器 负责对日志进行过滤(不常用,可以通过格式或级别过滤输出)

3.Handler 处理器 负责将日志输出到指定位置

4.Formater 格式化 负责处理日志显示的格式

import logging

# 1.创建1个logger:

lg = logging.getLogger("zb")

# 2.创建handler(负责输出,输出到屏幕streamhandler,输出到文件filehandler)

fh = logging.FileHandler(filename="a.log",mode="a",encoding="utf-8")#默认mode 为a模式,默认编码方式为utf-8

sh = logging.StreamHandler()

# 3.创建formatter:

formatter=logging.Formatter(fmt="%(asctime)s-%(name)s-%(levelname)s-%(message)s")

# 4.绑定关系:①logger绑定handler

lg.addHandler(fh)

lg.addHandler(sh)

# ②为handler绑定formatter

fh.setFormatter(formatter)

sh.setFormatter(formatter)

# 5.设置日志级别(日志级别两层关卡必须都通过,日志才能正常记录)

lg.setLevel(10)

fh.setLevel(10)

sh.setLevel(10)

# 6.调用日志

lg.debug("haha")

4.导入模块,不用重复造轮子,已经有写好的模块可以直接调用

(以下内容老男孩egon老师博客复制来的)

import os
import logging.config

定义三种日志输出格式 开始

standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]'
'[%(levelname)s][%(message)s]' #其中name为getlogger指定的名字

simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'

id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s'

定义日志输出格式 结束

logfile_dir = os.path.dirname(os.path.abspath(file)) # log文件的目录

logfile_name = 'all2.log' # log文件名

如果不存在定义的日志目录就创建一个

if not os.path.isdir(logfile_dir):
os.mkdir(logfile_dir)

log文件的全路径

logfile_path = os.path.join(logfile_dir, logfile_name)

log配置字典

LOGGING_DIC = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'standard': {
'format': standard_format
},
'simple': {
'format': simple_format
},
},
'filters': {},
'handlers': {
#打印到终端的日志
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler', # 打印到屏幕
'formatter': 'simple'
},
#打印到文件的日志,收集info及以上的日志
'default': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler', # 保存到文件
'formatter': 'standard',
'filename': logfile_path, # 日志文件
'maxBytes': 102410245, # 日志大小 5M
'backupCount': 5,
'encoding': 'utf-8', # 日志文件的编码,再也不用担心中文log乱码了
},
},
'loggers': {
#logging.getLogger(name)拿到的logger配置
'': {
'handlers': ['default', 'console'], # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
'level': 'DEBUG',
'propagate': True, # 向上(更高level的logger)传递
},
},
}

def load_my_logging_cfg(msg):
logging.config.dictConfig(LOGGING_DIC) # 导入上面定义的logging配置
logger = logging.getLogger(name) # 生成一个log实例
logger.info(msg) # 记录该文件的运行状态

if name == 'main':
load_my_logging_cfg()

以上我们可以放入一个mylog.py文件,当做一个模块导入使用

1.可以发现模块在最后帮我们定义了一个函数

我们导入模块from log(项目文件夹log) import mylog

logger = mylog.load_my_logging_cfg 这个函数名太长,搞个变量指向下

使用这个函数存在一个问题,就是我们输出的级别被固定死为info

2.如果我们要记录不同级别的日志,还得手动导入字典

import logging

import logging.config

from log import mylog

logging.config.dicConfig(mylog.LOGGING_DIG)从mylog模块导入配置字典

logger = logging.getLogger("zb")生成一个日志生成器

logging.error("hah")

logging.info("hah")

logging.debug("hah")

logging.warning("hah")

logging.critical("hah")

logging日志模块,四种方式的更多相关文章

  1. 【转】python模块分析之logging日志(四)

    [转]python模块分析之logging日志(四) python的logging模块是用来写日志的,是python的标准模块. 系列文章 python模块分析之random(一) python模块分 ...

  2. python模块分析之logging日志(四)

    前言 python的logging模块是用来设置日志的,是python的标准模块. 系列文章 python模块分析之random(一) python模块分析之hashlib加密(二) python模块 ...

  3. Dojo初探之2:设置dojoConfig详解,dojoConfig参数详解+Dojo中预置自定义AMD模块的四种方式(基于dojo1.11.2)

    Dojo中想要加载自定义的AMD模块,需要先设置好这个模块对应的路径,模块的路径就是这个模块的唯一标识符. 一.dojoConfig参数设置详解 var dojoConfig = { baseUrl: ...

  4. python 自动化之路 logging日志模块

    logging 日志模块 http://python.usyiyi.cn/python_278/library/logging.html 中文官方http://blog.csdn.net/zyz511 ...

  5. Python入门之logging日志模块以及多进程日志

    本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 1. logging日志模块介绍 python ...

  6. Python logging(日志)模块

    python日志模块 内容简介 1.日志相关概念 2.logging模块简介 3.logging模块函数使用 4.logging模块日志流处理流程 5.logging模块组件使用 6.logging配 ...

  7. 约束、自定义异常、hashlib模块、logging日志模块

    一.约束(重要***) 1.首先我们来说一下java和c#中的一些知识,学过java的人应该知道,java中除了有类和对象之外,还有接口类型,java规定,接口中不允许在方法内部写代码,只能约束继承它 ...

  8. pyhton——logging日志模块的学习

    https://www.cnblogs.com/yyds/p/6901864.html 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模 ...

  9. logging日志模块配置

    logging日志模块 日志级别 日志一共分成5个等级,从低到高分别是: 1)DEBUG 2)INFO 3)WARNING 4)ERROR 5)CRITICAL 说明: DEBUG:详细的信息,通常只 ...

  10. 实现web数据同步的四种方式

    http://www.admin10000.com/document/6067.html 实现web数据同步的四种方式 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 ...

随机推荐

  1. [筆記]catalan卡特蘭數

    前言:希望自己每個星期能發一篇文章,提升一下寫文章的能力?雖然對語文作文毫無幫助但是總比玩遊戲強 所以不務正業的東西就不放在首頁了,有興趣的可以點分類去看 來源:https://www.cnblogs ...

  2. bryce1010专题训练——CDQ分治

    Bryce1010模板 CDQ分治 1.与普通分治的区别 普通分治中,每一个子问题只解决它本身(可以说是封闭的) 分治中,对于划分出来的两个子问题,前一个子问题用来解决后一个子问题而不是它本身 2.试 ...

  3. 洛谷P3177||bzoj4033 [HAOI2015]树上染色

    洛谷P3177 bzoj4033 根本不会做... 上网查了题解,发现只要在状态定义的时候就考虑每一条边全局的贡献就好了? 考虑边的贡献和修改状态定义我都想到了,然而并不能想到要结合起来 ans[i] ...

  4. how browser supports https

    1. pre-installed certificate authorities 2. ssl/tls encription ssl/tls handshake flow: 1. exchange d ...

  5. VMware的linux虚拟机实现和windows的文件共享

    使用的centos7和windows10,在虚拟机centos7中是root身份.由于是第一次用没有界面的linux,可谓是困难重重…… 一 打开VMware,然后选中你的虚拟机,我的是centos7 ...

  6. winfrom项目的打印

    自己可以下一个PDF打印机(例如下载64位office虚拟打印文档) 首先要添加控件 1.添加打印的选项卡,并命名为打印 2.点击打印选项卡,右击鼠标,选择选择项 using System;using ...

  7. mavon-editor 存储md文件以及md文件解析成html文件

    一.md文件的存储 因为是vue-cli项目,所以使用的是mavonEditor. github地址:https://github.com/hinesboy/mavonEditor 使用方法: 首先安 ...

  8. Glide图片框架

    //加载圆形图片Glide.with(this).load(WSCAppStatic.WEB_KEFU_PHOTO_URL+ "?usercode=8120000315") .as ...

  9. uvm_env——UVM大环境(UVM Environment )

    1 What is uvm_env? uvm_env is used to create and connect the uvm_components like driver, monitors , ...

  10. [转]八款开源Android游戏引擎

    八款开源Android游戏引擎 1.Angle Angle是一款专为Android平台设计的,敏捷且适合快速开发的2D游戏引擎,基于OpenGL ES技术开发.该引擎全部用Java代码编写,并且可以根 ...