首页 > 其他分享 >logging配置字典

logging配置字典

时间:2022-10-09 14:26:18浏览次数:55  
标签:logging format 配置 filename 日志 level root 字典

日志配置

1.配置字典

# 核心就在于CV
import logging
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'
 
logfile_path = 'a3.log'
# 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': 1024*1024*5,  # 日志大小 5M
            'backupCount': 5,
            'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
        },
    },
    'loggers': {
        #logging.getLogger(__name__)拿到的logger配置  空字符串作为键 能够兼容所有的日志
        '': {
            'handlers': ['default', 'console'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
            'level': 'DEBUG',
            'propagate': True,  # 向上(更高level的logger)传递
        },  # 当键不存在的情况下 (key设为空字符串)默认都会使用该k:v配置
    },
}
 
 
# 使用配置字典
logging.config.dictConfig(LOGGING_DIC)  # 自动加载字典中的配置
logger1 = logging.getLogger('xxx')
logger1.debug('好好的 不要浮躁 努力就有收获')

2.详细参数

1.日志级别
CRITICAL = 50 #FATAL = CRITICAL
ERROR = 40
WARNING = 30 #WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0 #不设置
日志的设置是自下而上的,如果等级为ERROR,那么比他等级低的将不会被写入日志。

2. 默认级别为warning,默认打印到终端
import logging

logging.debug(‘调试debug’)
logging.info(‘消息info’)
logging.warning(‘警告warn’)
logging.error(‘错误error’)
logging.critical(‘严重critical’)

‘’’
WARNING:root:警告warn
ERROR:root:错误error
CRITICAL:root:严重critical
‘’’

3.为logging模块指定全局配置,针对所有logger有效,控制打印到文件中
logging.basicConfig() 介绍
可在logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有
filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。
filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
format:指定handler使用的日志显示格式。
datefmt:指定日期时间格式。
level:设置rootlogger(后边会讲解具体概念)的日志级别
stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为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用户输出的消息

使用:
import logging
logging.basicConfig(filename=‘access.log’,
format=’%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s’,
datefmt=’%Y-%m-%d %H:%M:%S %p’,
level=10)

logging.debug(‘调试debug’)
logging.info(‘消息info’)
logging.warning(‘警告warn’)
logging.error(‘错误error’)
logging.critical(‘严重critical’)

结果:
access.log内容:
2017-07-28 20:32:17 PM - root - DEBUG -test: 调试debug
2017-07-28 20:32:17 PM - root - INFO -test: 消息info
2017-07-28 20:32:17 PM - root - WARNING -test: 警告warn
2017-07-28 20:32:17 PM - root - ERROR -test: 错误error
2017-07-28 20:32:17 PM - root - CRITICAL -test: 严重critical

标签:logging,format,配置,filename,日志,level,root,字典
From: https://www.cnblogs.com/chunyouqudongwuyuan/p/16771927.html

相关文章

  • IDEA配置文档翻译插件接入阿里翻译和有道翻译
    在编码的过程中,时常需要使用一些第三方jar包,jar包里面大部分的文档都是英文的,对英语好的同学自然是无压力,但是对英语不好的同学就有点不友好了。对于我这种英语一般水平的......
  • 定时任务参数配置
    QuartZCron表达式解析:Cron表达式由7个部分组成,每个部分使用空格隔开。表达式中的七个部分从左到右代表的含义如下:秒分时日(每月中的一天)月日(每周中的一天)年 具体参......
  • maven篇1: 安装、设置和环境变量配置
    一、为什么需要maven①一个项目就是一个工程如果项目非常庞大,就不适合使用package来划分模块,最好是每一个模块对应一个工程,利于分工协作。借助于maven就可以将一个项目拆分......
  • 从零开始配置vim(25)——关于 c++ python 的配置
    从9月份到国庆这段时间,因为得了女儿,于是回老家帮忙料理家事以及陪伴老婆和女儿。一时之间无暇顾及该系列教程的更新。等我回来的时候发现很多小伙伴私信我催更。在这里向支......
  • Spring多数据源配置
    Spring多数据源配置,这里持久层框架使用mybatis,集成Mybatis多数据源有两种方式:1、创建多个SqlSessionFactory,扫描每个SqlSessionFactoryBean对应的包,形成了每个Factory对应一......
  • Spring读取配置文件
    一、Resource在Java程序中,我们经常会读取配置文件、资源文件等。使用Spring容器时,我们也可以把“文件”注入进来,方便程序读取。Spring提供了一个​​org.springframework.co......
  • Springboot自动配置原理
    一个boot项目启动类有个@SpringBootApplication注解,查看此注解主要包括@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三个注解@SpringBootConfigura......
  • 新电脑配置心得
    1、现在的xcode包是越来越大了,从appstore上下载的,真的是太慢了,下载就用了一天的时间安装用了几个小时,然后就下班了,幸好第二天来的时候已经安装好了建议:尽量是在开发者官......
  • JDK安装与环境变量配置(windows)
    系统变量→新建JAVA_HOME变量。变量值填写jdk的安装目录(本人是C:\Java\jdk1.7.0)系统变量→寻找Path变量→编辑在变量值最后输入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bi......
  • ubuntu ens33网卡掉线问题配置系统重启后自动加载网卡驱动
     cd/lib/systemd/system 进入system目录找到 rc-local.service文件catrc-local.service#SPDX-License-Identifier:LGPL-2.1-or-later##Thisfile......