from ..environment import Environment try: dt = Environment.get_instance().calendar_dt.strftime(DATETIME_FORMAT) except Exception: dt = datetime.now().strftime(DATETIME_FORMAT) log = "{dt} {level} {msg}".format( dt=dt, level=record.level_name, msg=to_utf8(record.message), ) return log user_std_handler = ColorizedStderrHandler(bubble=True) user_std_handler.formatter = user_std_handler_log_formatter def formatter_builder(tag): def formatter(record, handler): log = "[{formatter_tag}] [{time}] {level}: {msg}".format( formatter_tag=tag, level=record.level_name, msg=to_utf8(record.message), time=record.time, ) if record.formatted_exception: log += "\n" + record.formatted_exception return log
return log # 日志名称 LOG_NAME = 'ai_csr' # 日志等级 LOG_LEVEL = logbook.base.INFO # 日志存放路径 # LOG_DIR = os.path.join(os.path.dirname(__file__), '/logs') LOG_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), r'logs') #print("LOG_DIR="+LOG_DIR) if not os.path.exists(LOG_DIR): os.makedirs(LOG_DIR) # 日志打印到控制台 log_std = ColorizedStderrHandler(bubble=True, level=LOG_LEVEL) log_std.formatter = log_type # 日志打印到文件 log_file = TimedRotatingFileHandler(os.path.join(LOG_DIR, '%s.log' % LOG_NAME), date_format='%Y-%m-%d', bubble=True, level=LOG_LEVEL, encoding='utf-8') log_file.formatter = log_type # 脚本日志 run_log = Logger(LOG_NAME) def init_logger(): logbook.set_datetime_format("local") run_log.handlers = []
from .utils import ExecutionContext __all__ = [ "user_log", ] def user_log_formatter(record, handler): return "[{dt}] {level}: {msg}".format( dt=ExecutionContext.get_current_dt(), level=record.level_name, msg=record.message, ) # handler = StreamHandler(sys.stdout) handler = ColorizedStderrHandler() handler.formatter = user_log_formatter handler.push_application() user_log = Logger("user_log") def user_print(*args, **kwargs): sep = kwargs.get("sep", " ") end = kwargs.get("end", "") message = sep.join(map(str, args)) + end user_log.info(message)
def user_handler_log_formatter(record, handler): log = "[{date}][{level}][{filename}][{func_name}][{lineno}]- {msg}".format( date=record.time, level=record.level_name, # 日志等级 filename=os.path.split(record.filename)[-1], # 文件名 func_name=record.func_name, # 函数名 lineno=record.lineno, # 行号 msg=record.message, # 日志内容 ) return log # 打印到屏幕句柄 user_std_handler = ColorizedStderrHandler(bubble=True, level='ERROR') user_std_handler.formatter = user_handler_log_formatter # 日志路径,在主工程下生成log目录 LOG_DIR = os.path.join('log') if not os.path.exists(LOG_DIR): os.makedirs(LOG_DIR) # 打印到文件句柄 user_file_handler = TimedRotatingFileHandler(os.path.join( LOG_DIR, '%s.log' % 'test_log'), date_format='%Y%m%d', bubble=True) user_file_handler.formatter = user_handler_log_formatter # 用户代码logger日志 user_log = Logger("user_log")