python 处理日志
copyimport 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) + '/'
log_file = logging.FileHandler(filename=project_directory+'log/'+fileName, encoding='utf8')
class Log(object):
__logger = None
log_colors_config = {
'DEBUG': 'cyan',
'INFO': 'green',
'WARNING': 'yellow',
'ERROR': 'red'
}
@classmethod
def get_logger(cls, file_handler):
cls.__logger = logging.getLogger('test')
console_handler = logging.StreamHandler()
cls.__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=cls.log_colors_config
)
console_handler.setFormatter(console_formatter)
file_handler.setFormatter(file_formatter)
if not cls.__logger.handlers:
cls.__logger.addHandler(console_handler)
cls.__logger.addHandler(file_handler)
console_handler.close()
file_handler.close()
return cls.__logger
logger = Log().get_logger(log_file)
if __name__ == '__main__':
logger.debug('DEBUG 日志')
logger.info('INFO 日志')
logger.warning('WARNING 日志')
logger.error('ERROR 日志')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!