文章目录
- 前言
- python-引用配置文件和日志
- 1. 给一个配置文件
- 2. 获取配置文件信息方法
- 3. 获取配置信息,引入日志分页功能demo
- 4. 测试
前言
如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!
python-引用配置文件和日志
1. 给一个配置文件
配置文件:logConflg.ini
详情:
[logging]
log_file = logs/logTest.log
log_level = INFO
max_bytes = 10240
backup_count = 5
[paths]
chrome_path = C:/Users/杨镇宇/AppData/Local/Google/Chrome/Application/chrome.exe
注意的是要在配置文件中使用普通字符串的路径格式,而不要使用 Python 字符串字面量标志。
因为 configparser 读取的内容都是普通字符串。
2. 获取配置文件信息方法
# 获取脚本的当前路径
current_dir = pathlib.Path(__file__).parent
# 配置文件路径
config_file = current_dir / 'data' / 'logConfig.ini'
# 读取配置文件
config = configparser.ConfigParser()
with open(config_file, 'r', encoding='utf-8') as f:
config.read_file(f)
# 从配置文件中读取日志配置
log_file = current_dir / config['logging']['log_file']
log_level = config['logging'].get('log_level', 'INFO').upper()
max_bytes = config['logging'].getint('max_bytes', 100) # 默认10KB
backup_count = config['logging'].getint('backup_count', 5) # 默认保留5个文件
chrome_path = config['paths']['chrome_path']
3. 获取配置信息,引入日志分页功能demo
实现日志分页功能:
可以使用:logging.handlers 模块中的 RotatingFileHandler。它可以在日志文件达到指定大小时自动创建新的日志文件。
import logging.config
import configparser
import pathlib
from logging.handlers import RotatingFileHandler
# 获取脚本的当前路径
current_dir = pathlib.Path(__file__).parent
# 配置文件路径
config_file = current_dir / 'data' / 'logConfig.ini'
# 读取配置文件
config = configparser.ConfigParser()
with open(config_file, 'r', encoding='utf-8') as f:
config.read_file(f)
# 从配置文件中读取日志配置
log_file = current_dir / config['logging']['log_file']
log_level = config['logging'].get('log_level', 'INFO').upper()
max_bytes = config['logging'].getint('max_bytes', 10240) # 默认10KB
backup_count = config['logging'].getint('backup_count', 5) # 默认保留5个文件
chrome_path = config['paths']['chrome_path']
# 创建日志目录(如果不存在)
log_file.parent.mkdir(parents=True, exist_ok=True)
# 配置日志记录
logging.basicConfig(
level=log_level,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
RotatingFileHandler(log_file, mode='a', maxBytes=max_bytes, backupCount=backup_count, encoding='utf-8'),
logging.StreamHandler()
]
)
logger = logging.getLogger(__name__)
# 示例函数
def example_function():
logger.debug("This is a debug message")
logger.info(f'chrome_path: {chrome_path}')
logger.warning("This is a warning message")
logger.error("This is an error message")
logger.critical("This is a critical message")
def main():
logger.info("Application started")
try:
example_function()
except Exception as e:
logger.exception("An error occurred")
logger.info("Application finished")
if __name__ == "__main__":
main()
4. 测试
为了测试我将分页字节数从10240改成了10,频繁调用后结果:
测试成功。