step执行前做文件检验后,停止运行step,还想在job执行后打印log如何实现
时间: 2023-12-21 15:03:47 浏览: 30
在Step执行前做文件检验的时候,可以使用Python的`logging`模块记录日志信息,例如:
```python
import logging
logger = logging.getLogger(__name__)
def file_check(file_path):
logger.info(f"Checking file: {file_path}")
# do file check
if not file_exists:
logger.error(f"{file_path} does not exist")
return False
else:
logger.info(f"{file_path} exists")
return True
```
在Step执行结束后,无论是正常结束还是因为文件检验失败而被停止运行,都可以使用同样的方式记录日志信息,例如:
```python
def step_function():
if not file_check(file_path):
logger.error("File check failed. Stopping step.")
return
logger.info("Step is running...")
# do step work
logger.info("Step is finished.")
```
在Job执行结束后,可以通过查看日志文件来获取所有步骤的日志信息。如果需要在Job执行结束后打印所有步骤的日志信息到控制台,可以使用以下代码:
```python
import logging.handlers
root_logger = logging.getLogger()
console_handler = logging.StreamHandler()
root_logger.addHandler(console_handler)
# Add a rotating file handler to the root logger
file_handler = logging.handlers.RotatingFileHandler(
filename='job.log',
mode='a',
maxBytes=1024*1024*5,
backupCount=5,
encoding='utf-8'
)
root_logger.addHandler(file_handler)
# Set the logging level for all loggers to INFO
root_logger.setLevel(logging.INFO)
# Run the job
for step in steps:
step_function()
# Print all log messages to the console
with open('job.log', 'r') as log_file:
print(log_file.read())
```
这样就可以在Job执行结束后打印所有步骤的日志信息到控制台了。