微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python logger

python 处理日志

import logging
import colorlog
import datetime
from pathlib import Path

'''
Loggers:记录器,提供应用程序代码能直接使用的接口;
Handlers:处理器,将记录器产生的日志发送至目的地;
Filters:过滤器,提供更好的粒度控制,决定哪些日志会被输出;

Formatters:格式化器,设置日志内容的组成结构和消息字段。
        %(name)s Logger的名字
        %(levelno)s 数字形式的日志级别  #日志里面的打印的对象的级别
        %(levelname)s 文本形式的日志级别 #级别的名称
        %(filename)s 调用日志输出函数的模块的文件名
        %(module)s 调用日志输出函数的模块名
        %(funcName)s 调用日志输出函数函数名
        %(lineno)d 调用日志输出函数的语句所在的代码行
        %(asctime)s 字符串形式的当前时间。认格式是 “2022-07-20 20:49:45,896”。逗号后面的是毫秒
        %(message)s用户输出的消息
'''

# 定义日志文件格式
fileName = datetime.datetime.Now().strftime('%Y-%m-%d') + '.log'

# 日志文件位置
project_directory = str(Path(__file__).parent.parent) + '/'
file_handler = logging.FileHandler(filename=project_directory+'log/'+fileName, encoding='utf8')

# 日志颜色
log_colors_config = {

    'DEBUG': 'cyan',
    'INFO': 'green',
    'WARNING': 'yellow',
    'ERROR': 'red'
}

# 创建logger记录器
logger = logging.getLogger('test')

# 控制台处理器
console_handler = logging.StreamHandler()

# 日志级别设置
logger.setLevel(logging.DEBUG)
console_handler.setLevel(logging.DEBUG)
file_handler.setLevel(logging.INFO)

# 日志文件输出
file_formatter = logging.Formatter(
    fmt='[%(asctime)s] %(filename)s -> %(funcName)s line:%(lineno)d [%(levelname)s] : %(message)s',
    datefmt='%Y-%m-%d  %H:%M:%s'
)

# 控制台输出
console_formatter = colorlog.ColoredFormatter(
    fmt='%(log_color)s[%(asctime)s] %(filename)s -> %(funcName)s line:%(lineno)d [%(levelname)s] : %(message)s',
    datefmt='%Y-%m-%d %H:%M:%s',
    log_colors=log_colors_config
)
console_handler.setFormatter(console_formatter)
file_handler.setFormatter(file_formatter)


if not logger.handlers:
    logger.addHandler(console_handler)
    logger.addHandler(file_handler)

console_handler.close()
file_handler.close()

def test():
    ''' 测试 '''
    logger.debug('DEBUG 日志')
    logger.info('INFO 日志')
    logger.warning('WARNING 日志')
    logger.error('ERROR 日志')


if __name__ == '__main__':
    test()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐