日志


一、日志的作用:

记录在系统上面进行的操作 记录系统运行状态 出现问题也能很快定位问题

二、日志组件:

1、loggers:日志器
2、handler:处理器
3、formatter:格式器

方法一:封装

 1 import logging
 2 
 3 def test_log():
 4     # 创建一个日志器  别的文件使用日志  就用到这个日志器
 5     logger=logging.getLogger()
 6     # 设置日志级别  日志信息输出info以上的级别信息 
 7     logger.setLevel(logging.INFO)
 8     # 创建一个格式器 
 9     fmt='%(asctime)s %(filename)s %(levelname)s  %(funcName)s  %(message)s'
10     formater=logging.Formatter(fmt)
11     # 处理器 Handler  要把日志信息输出到哪
12     # 创建一个输出到控制台的处理器 
13     sh=logging.StreamHandler()
14     # 把设置的日志信息放到控制台中
15     logger.addHandler(sh)
16     # 控制台设置格式器
17     sh.setFormatter(formater)
18 
19     # 在文件里面生成日志信息  创建处理器  文件处理器  处理器的作用:把日志信息输出到指定的位置
20     # 文件处理器创建  日志信息存放在哪
21     fh=logging.FileHandler('log1.log',encoding='utf-8')
22     # 需要把日志信息放到文件处理器里面去
23     logger.addHandler(fh)
24     # 给fh设置格式
25     fh.setFormatter(formater)
26     return logger

 

方法二:自定义配置文件log.ini

[loggers]
keys=root

[handlers]
keys=fileHandler,streamHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=INFO
handlers=fileHandler,streamHandler

[handler_fileHandler]
class=FileHandler
level=INFO
formatter=simpleFormatter
args=('./mylog.log','a','utf-8')

[handler_streamHandler]
class=StreamHandler
level=INFO
formatter=simpleFormatter



[formatter_simpleFormatter]
format=%(asctime)s %(filename)s %(levelname)s  %(funcName)s  %(message)s

 

import logging
from logging import config


# 这里之所以不直接写入日志的文件的路径,是因为使用日志时候的相对路径的层级不同,会引发报错。
def get_log(path):
    """
    获取日志ini文件
    :param path: 日志文件的相对路径
    :return: 日志类
    """
    logging.config.fileConfig(path)
    return logging.getLogger()
log = get_log(os.path.join(CONFIG_DIR, 'log.ini'))

 

posted @ 2021-11-20 23:52  术科术  阅读(28)  评论(0编辑  收藏  举报