1、日志的级别

日志一共分为5个等级,从低到高分别是:

级别 说明
DEBUG 输出详细的运行情况,主要用于调试。
INFO 确认一切按预期运行,一般用于输出重要运行情况。
WARNING 系统运行时出现未知的事情(如:警告内存空间不足),但是软件还可以继续运行,可能以后运行时会出现问题。
ERROR 系统运行时发生了错误,但是还可以继续运行。
CRITICAL

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

这5个等级,也分别对应5种打印日志的方法:debug、info、warning、error、critical。默认的日志收集器是收集WARNING以上等级的日志。

2、日志文件分类存储代码,创建文件login_demo02.py

import logging
class log:
def __init__(self):
# 创建自己的日志收集器
self.my_log = logging.getLogger("my_log")
# 设置收集的日志等级,设置为DEBUG等级
self.my_log.setLevel("DEBUG")
# 日志输出渠道
# 创建一个日志输出渠道(输出到控制台),并且设置输出的日志等级为INFO以上
self.l_s = logging.StreamHandler()
self.l_s.setLevel("DEBUG")
# 创构建一个日志输出渠道(输出到文件)
l_f = logging.FileHandler("error.log",encoding='utf8')
l_f.setLevel("ERROR")#设置输出的日志等级为ERROR以上
l_d=logging.FileHandler("debug.log",encoding='utf-8')
l_d.setLevel("DEBUG")#设置输出的日志等级为DEBUG以上
cc=logging.FileHandler("info.log",encoding='utf-8')
cc.setLevel("INFO")#设置输出的日志等级为INFO以上
#将日志输出渠道添加到日志收集器中
self.my_log.addHandler(self.l_s)
self.my_log.addHandler(l_f)
self.my_log.addHandler(l_d)
self.my_log.addHandler(cc)
# 设置日志输出的格式
# 可以通过logging.Formatter指定日志的输出格式,这个参数可以输出很多有用的信息,如下:
# % (name)s: 收集器名称
# % (levelno)s: 打印日志级别的数值
# % (levelname)s: 打印日志级别名称
# % (pathname)s: 打印当前执行程序的路径,其实就是sys.argv()
# % (filename)s: 打印当前执行程序名
# % (funcName)s: 打印日志的当前函数
# % (lineno)d: 打印日志的当前行号
# % (asctime)s: 打印日志的时间
# % (thread) d: 打印线程ID
# % (threadName)s: 打印线程名称
# % (process) d: 打印进程ID
# % (message) s: 打印日志信息
ft = "%(asctime)s - [%(filename)s -->line:%(lineno)d] - %(levelname)s: %(message)s"#工作中常用的日志格式
ft = logging.Formatter(ft)
# 设置控制台和日志文件输出日志的格式
self.l_s.setFormatter(ft)
l_f.setFormatter(ft)
l_d.setFormatter(ft)
cc.setFormatter(ft)
if __name__ == '__main__':
my_log=log().my_log
ss="一条小日志"
my_log.info(ss)
my_log.debug(ss)
my_log.error(ss)

运行结果如下:

3、其他文件调用

from login_demo02 import *

my_log=log().my_log
cc="这是一条日志"
my_log.debug(cc)
my_log.info(cc)
my_log.error(cc)

运行结果:

使用日志配置进行日志保存:

创建log.conf文件,内容如下:

[loggers]
keys=root,infoLogger [logger_root]
level=DEBUG
handlers=consoleHandler,fileHandler [logger_infoLogger]
handlers=consoleHandler,fileHandler
qualname=infoLogger
propagate=0 [handlers]
keys=consoleHandler,fileHandler [handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=form02
args=(sys.stdout,) [handler_fileHandler]
class=FileHandler
level=INFO
formatter=form01
args=('../log/infolog/info.log', 'a') [formatters]
keys=form01,form02 [formatter_form01]
format=>%(asctime)s | %(levelname)s |%(filename)s.%(funcName)s-->line:%(lineno)d: %(message)s [formatter_form02]
format=>%(asctime)s | %(levelname)s |%(filename)s.%(funcName)s-->line:%(lineno)d: %(message)s

代码如下:

import logging
from logging import config
class MyLog(object):
def __init__(self):
config.fileConfig('../config/log.conf')
self.logger = logging.getLogger()
@property
def my_logger(self):
return self.logger
if __name__ == '__main__':
log = MyLog()
log.my_logger.info('it is my test log message info')

配置参考:https://www.jb51.net/article/190556.htm

python----日志模块loggin的使用,按日志级别分类写入文件的更多相关文章

  1. Log4Net 配置日志按日期和日志级别分类写入

    配置效果图: 配置代码: <?xml version="1.0" encoding="utf-8" ?> <log4net> <! ...

  2. python基础编程:生成器、迭代器、time模块、序列化模块、反序列化模块、日志模块

    目录: 生成器 迭代器 模块 time 序列化 反序列化 日志 一.生成器 列表生成式: a = [1,2,3,3,4,5,6,7,8,9,10] a = [i+1 for i in a ] prin ...

  3. Python 日志模块详解

    前言 我们知道查看日志是开发人员日常获取信息.排查异常.发现问题的最好途径,日志记录中通常会标记有异常产生的原因.发生时间.具体错误行数等信息,这极大的节省了我们的排查时间,无形中提高了编码效率.所以 ...

  4. 日志模块logging使用心得

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

  5. tornado 增加日志模块

    log类 #!/usr/bin/env python # -*- coding:utf-8 -*- import logging.handlers class Logger(logging.Logge ...

  6. Mybatis框架基础支持层——日志模块(8)

    前言: java开发中常用的日志框架有Log4j,Log4j2,Apache Commons Log,java.util.logging,slf4j等,这些工具对外的接口不尽相同.为了统一这些工具的接 ...

  7. ERP设计之系统基础管理(BS)-日志模块设计(转载)

    原文地址:8.ERP设计之系统基础管理(BS)-日志模块设计作者:ShareERP 日志模块基本要素包括: 用户会话.登录.注销.模块加载/卸载.数据操作(增/删/改/审/弃/关等等).数据恢复.日志 ...

  8. nginx 配置文件与日志模块

    内容概要 Nginx 虚拟主机 基于多 IP 的方式 基于多端口的方式 基于多域名的方式 日志配置(日志格式详解) Nginx 访问控制模块(可以去 Nginx.org 文档 documentatio ...

  9. 一条更新SQL的内部执行及日志模块

    一条更新SQL的内部执行 学习MySQL实战45讲,非常推荐学 还是老图: 上文复习 在执行查询语句的时候,会执行连接器(总要连上才能搞事情),然后去查询缓存(MySQL8+删除了),有数据返回,没数 ...

随机推荐

  1. 360加固保so动态脱壳

    环境及工具 手机    : 中兴 U887 系统版本:   Android 2.3.5 工具    :   IDA pro 6.6 .0101Editor 目前so加壳有很多家,我己知的有 爱加密,梆 ...

  2. adbi学习:so hook实现机制

    本篇我们来看看adbi的实现原理,其实里面的知识点前面差不多都有涉及了,没多少新知识.adbi利用hijack程序将libexample.so注入到指定的进程中,并且在进程中加载libexample. ...

  3. IDEA 这样设置,好看到爆炸!!!

    Hello,大家好,我是楼下小黑哥. 今天这篇文章是次条视频的文案,这里推荐大家直接看视频学习. IDEA 这样设置,好看到爆炸!!!#01 今天这期我们来分享几个美化 IDEA 设置技巧,让你的 I ...

  4. Webpack5构建速度提升令人惊叹,早升级早受益

    为什么要升级? webpack4用的好好的,运行稳定,为什么要升级到webpack5, 每次升级,都要经历一场地震,处理许多loader和plugin API的破坏性改变. 请给我们一个充分的升级理由 ...

  5. web.xml常用配置详解

    web.xml常用配置详解 context-param 指定 ServletContext(上下文) 配置文件路径,基本配置一般是Spring配置文件,或者是spring-security的配置文件. ...

  6. 在 Linux 中,最直观、最可见的部分就是 文件系统(file system)

    在 Linux 中,最直观.最可见的部分就是 文件系统(file system).下面我们就来一起探讨一下关于 Linux 中国的文件系统,系统调用以及文件系统实现背后的原理和思想.这些思想中有一些来 ...

  7. Win10开启移动热点

    Win10开启移动热点 禁用 无线网卡 启动 无线网卡

  8. 查阅日志文件:有时候报错信息只是给出了问题的表面现象,要想更深入的了解问题,必须查看相应的日志文件,而日志文件又分为系统日志文件(/var/log)和应用的日志文件,结合这两个日志文件,一般就能定位问题所在。

    作为一名合格的 Linux 运维工程师,一定要有一套清晰.明确的解决故障思路,当问题出现时,才能迅速定位.解决问题,这里给出一个处理问题的一般思路: 重视报错提示信息:每个错误的出现,都是给出错误提示 ...

  9. 【转载】一次「Too many open files」故障

    一次「Too many open files」故障 发表于2015-08-02 昨天,项目的 ElasticSearch 服务挂了,我说的挂可不是进程没了,因为有 Supervisor 保护,而是服务 ...

  10. Spring Cloud(Dalston.SR1)

    Spring Cloud 示例项目地址:https://github.com/Yanshaoshuai/microservicecloud Eureka 集群搭建 microservicecloud- ...