python - 日志文件没有给出想要的结果,在代码中找不到错误
问题描述
我正在为每个区域创建三个日志文件,如下所示。如果region1
文件名中存在 ,则其状态(无论是已传输还是失败)将'region1.log'
类似地显示为region2
和region3
。我正在将文件从一个文件夹传输到另一个文件夹。
import os
from os import path
import shutil
import logging
import paramiko
formatter = logging.Formatter('%(asctime)s %(levelname)s[%(filename)s:%(lineno)d] %(message)s')
def setup_logger(name, log_file, level=logging.INFO):
handler = logging.FileHandler(log_file)
handler.setFormatter(formatter)
logger = logging.getLogger(name)
logger.setLevel(level)
logger.addHandler(handler)
return logger
src = "source_path"
dst = "destination_path"
files = os.listdir(src)
for i in files:
if 'region1' in i:
logger1 = setup_logger('',"region1.log" )
#print(i)
try:
filename = os.path.join(src, i)
shutil.move(filename, dst)
logger1.info(i + ' tranferred')
except:
logger1.error(i + ' failed')
elif 'region2' in i:
logger2 = setup_logger('',"region2.log" )
#print(i)
try:
filename = os.path.join(src, i)
shutil.move(filename, dst)
logger2.info(i + ' tranferred')
except:
logger2.error(i + ' failed')
elif 'region3' in i:
logger3 = setup_logger('',"region3.log" )
#print(i)
try:
filename = os.path.join(src, i)
shutil.move(filename, dst)
logger3.info(i + ' tranferred')
except:
logger3.error(i + ' failed')
else:
print(i)
问题是:
在region1.log
region2.log
region3.log
所有三个区域的打印状态中,而根据代码,region1.log
if 'region1' in i:
它应该只为 region1 提供已转移或失败的状态。
我哪里错了?请帮忙!!!
解决方案
调用时需要提供不同的名称setup_logger()
。如果您每次都使用相同的名称,logging.getLogger()
将返回相同的记录器对象,并且您只需在调用logger.addHandler()
. 由于记录器记录到它的所有处理程序,所有消息最终都在所有文件中。
您还可以在每个区域的案例中删除所有相同的代码,并在一个地方执行此操作。
for i in files:
if 'region1' in i:
logger = setup_logger('region1', 'region1.log')
elif 'region2' in i:
logger = setup_logger('region2', 'region2.log')
elif 'region3' in i:
logger = setup_logger('region3', 'region3.log')
else:
print(i)
continue
try:
filename = os.path.join(src, i)
shutil.move(filename, dst)
logger.info(i + ' tranferred')
except:
logger.error(i + ' failed')
推荐阅读
- vim - Vim + racer 产生“错误”E117:未知函数:racer#RacerComplete”
- python - pd.cut 可以同时使用区间范围和标签吗?
- python - django.db.utils.OperationalError:SSL 连接已意外关闭
- c - 为什么指针算术以它的方式工作?
- java - 我想把莫尔斯电码翻译成文字。还有一个小问题
- wso2 - 在 WSO2 EI 中迭代的最佳方法是什么?
- sql - Oracle:查询以确定一个或多个模式从表空间消耗的存储?
- c# - 更改 datagridview 中的表数据会清空表而不是重新填充
- reactjs - 如何从 AWS Cognito 上的托管 UI 获取用户池令牌
- twilio - 在 NodeJS 中遇到“ReferenceError:日历未定义”,但相同的代码在 Google 的 API 测试控制台中工作