-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutil.py
More file actions
44 lines (35 loc) · 1.57 KB
/
util.py
File metadata and controls
44 lines (35 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import os
from configparser import ConfigParser
from datetime import datetime
import logging
# 该方法的配置读取优先级为 环境变量 > config.ini > default_value默认值
# docker方式部署时, 只需配置环境变量, 无需重新构建镜像
# GitHub Actions方式部署时, 部分敏感信息不适合填进config.ini文件并上传至代码仓库, 也请配置进环境变量中
def get_cfg(section: str, key: str, default_value = ''):
# 项目中用到的环境变量名统一是大写的, 这里对入参key做了大写转换
config_value = os.environ.get(key.upper())
if config_value:
return config_value
# 因为ConfigParser限制变量名是小写的, 在读取config.ini的配置,对入参key做了小写转换
parser = ConfigParser()
parser.read('./config/config.ini', encoding='utf-8')
config_value = dict(parser.items(section))[key.lower()]
if config_value:
return config_value
# 最后取默认值作为兜底
return default_value
class LoggerRedirect:
def __init__(self, original_stdout):
self.original_stdout = original_stdout
def write(self, message):
if message != '\n':
logging.info(message.strip())
self.original_stdout.write(message)
self.flush()
def flush(self):
self.original_stdout.flush()
# 创建过滤器来只允许 INFO 和 WARNING 级别的日志
class InfoWarningFilter(logging.Filter):
def filter(self, record):
# 只允许 INFO 和 WARNING 级别的日志
return record.levelno in [logging.INFO, logging.WARNING]