Skip to content

Commit

Permalink
新增文件日志,重构标准输出流配置
Browse files Browse the repository at this point in the history
  • Loading branch information
fifilyu committed Jun 30, 2022
1 parent 69edc40 commit 083b768
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 15 deletions.
60 changes: 46 additions & 14 deletions happy_python/happy_log.py
Expand Up @@ -46,6 +46,8 @@ class HappyLog(object):
logger_name = ''
logger = None
default_file_handler = None
default_stream_handler = None
default_handler_count = 0

def __init__(self, log_ini='', logger_name=''):
self.log_level: HappyLogLevel = HappyLogLevel.INFO
Expand All @@ -59,9 +61,6 @@ def __init__(self, log_ini='', logger_name=''):
def get_instance(log_ini='', logger_name=''):
"""
单例模式
:param log_ini:
:param logger_name
:return:
"""
global _HappyLogSingletonObj
global _HappyLogSingletonDefaultObj
Expand All @@ -88,25 +87,55 @@ def set_level(self, log_level: int = HappyLogLevel.INFO.value):
:param log_level: 有效范围0~5
:return:
"""
import sys

self.log_level = HappyLogLevel(log_level)
self.logger.setLevel(self.log_level.name)

def load_default_config(self):
def build_default_config(self, handler: logging.StreamHandler | logging.FileHandler, _formatter: logging.Formatter):
self.default_handler_count += 1

self.logger = logging.getLogger()

self.logger.setLevel(self.log_level.name)
handler.setFormatter(_formatter)
self.logger.addHandler(handler)

if self.default_handler_count == 1:
self.logger.info('未启用日志配置文件,加载默认设置')

def load_stream_default_config(self, formatter: logging.Formatter = logging.Formatter(
'%(asctime)s %(process)s [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S')):
"""
载入默认日志配置
:return:
"""
import sys

self.logger = logging.getLogger()
self.logger.setLevel(self.log_level.name)
self.default_file_handler = logging.StreamHandler(sys.stdout)
formatter = logging.Formatter('%(asctime)s %(process)s [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S')
self.default_file_handler.setFormatter(formatter)
self.logger.addHandler(self.default_file_handler)
self.logger.debug('未启用日志配置文件,加载默认设置。')
if self.logger and self.default_stream_handler:
self.logger.removeHandler(self.default_stream_handler)

self.default_stream_handler = logging.StreamHandler(sys.stdout)
self.build_default_config(handler=self.default_stream_handler, _formatter=formatter)

def load_file_default_config(self,
filename: str,
formatter: logging.Formatter = logging.Formatter(
'%(asctime)s %(process)s [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S')):
"""
载入默认日志配置
:return:
"""
from pathlib import Path

if filename:
Path(filename).parent.mkdir(parents=True, exist_ok=True)

if self.logger and self.default_file_handler:
self.logger.removeHandler(self.default_file_handler)

self.default_file_handler = logging.FileHandler(filename)
self.build_default_config(handler=self.default_file_handler, _formatter=formatter)
else:
self.logger.error('必须指定日志文件名')

def load_config(self):
if os.path.exists(self.log_ini):
Expand All @@ -116,12 +145,15 @@ def load_config(self):
if self.default_file_handler:
self.logger.removeHandler(self.default_file_handler)

if self.default_stream_handler:
self.logger.removeHandler(self.default_stream_handler)

self.logger.info('日志配置文件 \'%s\' 加载成功。' % self.log_ini)

if self.logger_name:
self.logger = logging.getLogger(self.logger_name)
else:
self.load_default_config()
self.load_stream_default_config()

def enter_func(self, func_name: str):
self.logger.trace("Enter function: %s" % func_name)
Expand Down
2 changes: 1 addition & 1 deletion happy_python/version.py
Expand Up @@ -5,4 +5,4 @@
Happy Python 版本号
"""

__version__ = '0.2.8'
__version__ = '0.3.0'

0 comments on commit 083b768

Please sign in to comment.