logging日志.py
import os, sys, inspect, traceback
# print(os.path.basename(__file__)) # 文件名
# print(inspect.stack()[1][3]) # 函数名
# print(sys._getframe().f_lineno) # 当前行号
# print(traceback.format_exc()) # 异常信息
import logging
import datetime
import os
from logging.handlers import RotatingFileHandler
import colorlog # 日志颜色
log_colors_config = {
'DEBUG': 'cyan',
'INFO': 'green',
'WARNING': 'yellow',
'ERROR': 'red',
'CRITICAL': 'red',
}
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
# logging_format = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
logging_format = colorlog.ColoredFormatter('%(log_color)s - %(asctime)s - %(levelname)s - %(message)s',
log_colors=log_colors_config)
def __console(level, message):
# 线上日志文件目录
file_name = datetime.datetime.now().strftime('%Y-%m-%d')
# fiel_path_star = os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
file_path = '/store/logs/whole_web_search/' + file_name
if not os.path.exists(file_path):
os.makedirs(file_path)
LOG_FILENAME = file_path + f'/whole_web_search.{file_name}.log'
# print(LOG_FILENAME)
fh = RotatingFileHandler(LOG_FILENAME, encoding='UTF-8', maxBytes=1024 * 1024 * 100, backupCount=999)
fh.setLevel(logging.DEBUG)
fh.setFormatter(logging_format)
logger.addHandler(fh)
# # 创建一个StreamHandler,用于输出到控制台
ch = colorlog.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(logging_format)
logger.addHandler(ch)
if level == 'info':
logger.info(message)
elif level == 'debug':
logger.debug(message)
elif level == 'warning':
logger.warning(message)
elif level == 'error':
logger.error(message)
# 这两行代码是为了避免日志输出重复问题
logger.removeHandler(ch)
logger.removeHandler(fh)
fh.close() # 关闭打开的文件
def debug(message):
__console('debug', message)
def info(message):
__console('info', message)
def warning(message):
__console('warning', message)
def error(message):
__console('error', message)
if __name__ == '__main__':
print(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))))

浙公网安备 33010602011771号