Fabric을 통해 작업 수행 전후에 작업 내용 알림
report.py
# -*- coding: utf-8 -*-
import logging
import time
from fabric.tasks import Task
from fabric.operations import *
from fabric.colors import *
class ReportStatus(Task):
"""
タスク実行前後にそのタスクをこれから実行する旨と実行終えた旨を伝える CustomTask クラス
@task(task_class=ReportStatus, task_name="実行前後表示テスト")
def something_task():
print green("タスク実行")
"""
def __init__(self, func, task_name, *args, **kwargs):
super(ReportStatus, self).__init__(*args, **kwargs)
self.func = func
self.task_name = task_name
if hasattr(func, '__doc__') and func.__doc__:
self.__doc__ = func.__doc__
else:
self.__doc__ = task_name
if hasattr(callable, '__module__'):
self.__module__ = callable.__module__
def run(self, *args, **kwargs):
print cyan("[%s] [%s] を実行します" % (self.task_name, self.func.__name__))
logging.info("[%s][%s] executing" % (self.func.__name__, self.task_name))
result = self.func(*args, **kwargs)
print green("[%s] [%s] を完了しました" % (self.task_name, self.func.__name__), bold=True)
logging.info("[%s][%s] done" % (self.func.__name__, self.task_name))
print "\n"
return result
def __call__(self, *args, **kwargs):
return self.run(*args, **kwargs)
def __getattr__(self, k):
return getattr(self.func, k)
def __details__(self):
return get_task_details(self.func)
logging을 사용하면 로그를 토로할 수 있기 때문에 적당히 설정하면 로그를 출력할 수 있습니다fabfile.py
# -*- coding: utf-8 -*-
import datetime
import logging
from fabric.colors import *
from fabric.api import *
from report import ReportStatus
log_file_name = "%s.log" % (datetime.datetime.today().strftime("%Y%m%d"))
logging.basicConfig(
format='[%(asctime)s][%(levelname)s] %(message)s',
filename=log_file_name, datefmt='%Y/%m/%d %I:%M:%S',
level=logging.INFO
)
@task(task_class=ReportStatus, task_name="実行前後表示テスト")
def something_task():
print green("タスク実行")
실행하면 이런 느낌이야.log 지정된 형식으로 내보내기
[2017/01/19 01:20:18][INFO] [something_task][実行前後表示テスト] executing
[2017/01/19 01:20:18][INFO] [something_task][実行前後表示テスト] done
Reference
이 문제에 관하여(Fabric을 통해 작업 수행 전후에 작업 내용 알림), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/vkgtaro/items/682128d5791088531819텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)