Created
November 6, 2021 16:22
-
-
Save gcdd1993/ecb2d1678a8b4caabbb4dff328323b67 to your computer and use it in GitHub Desktop.
输出日志到文件
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import time | |
import logging | |
from logging import handlers | |
# 单例 | |
def singleton(cls): | |
_instance = {} | |
def inner(): | |
if cls not in _instance: | |
_instance[cls] = cls() | |
return _instance[cls] | |
return inner | |
@singleton | |
class Log(object): | |
""" | |
输出日志类 | |
""" | |
def __init__(self): | |
self.logger = logging.getLogger("") | |
logs_dir = "logs" | |
if not os.path.exists(logs_dir): | |
os.mkdir(logs_dir) | |
# 设置日志文件名和日志格式 | |
log_file = time.strftime("%Y%m%d", time.localtime()) + ".log" | |
log_path = os.path.join(logs_dir, log_file) | |
# 追加写入日志 | |
rotating_file_handler = handlers.RotatingFileHandler( | |
filename=log_path, | |
encoding="utf-8" | |
) | |
self.format_str = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S') | |
rotating_file_handler.setFormatter(self.format_str) | |
# 终端输出 | |
console = logging.StreamHandler() | |
console.setLevel(logging.INFO) | |
console.setFormatter(self.format_str) | |
# 绑定 handler | |
self.logger.addHandler(rotating_file_handler) | |
self.logger.addHandler(console) | |
self.logger.setLevel(logging.INFO) | |
def logger(self): | |
return self.logger | |
if __name__ == "__main__": | |
logger = Log().logger | |
logger.info("Test info") | |
logger.error("Test error") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment