alecxe said के रूप में, प्रारूप फैब्रिक 1.x में हार्डकोड किया गया है (जब मैं इसे पोस्ट कर रहा हूं, केवल एक ही संस्करण उपलब्ध है।) a rejected pull request था जो इसका उपचार कर सकता था।
तो इसके बजाय हमें एक कार्य की आवश्यकता है। यह एक हैकी समाधान है जिसे मैंने लिखा है, लेकिन यह फैब्रिक के अनियंत्रित हिस्सों पर निर्भर करता है, जिसका अर्थ है कि यह भविष्य के संस्करणों में टूट सकता है।
from fabric.io import OutputLooper
from datetime import datetime
def newFlush(self, text):
stamp = datetime.now().strftime("%a %b %d %H:%M:%S - ")
print(stamp + text)
OutputLooper._flush = newFlush
इस बिंदु से आगे, आपके रिमोट मशीन से किसी भी आउटपुट में टाइमस्टैम्प होंगे।
उदाहरण के लिए, इस कोड के बिना sudo('echo "test"')
से उत्पादन होगा:
[InteractSL-DT1.usma.ibm.com] sudo: echo "test"
[InteractSL-DT1.usma.ibm.com] out: test
[InteractSL-DT1.usma.ibm.com] out:
'test'
लेकिन, आप अब यह मिल जाएगा जोड़ने के बाद:
[InteractSL-DT1.usma.ibm.com] sudo: echo "test"
Fri Jan 02 12:54:49 - [InteractSL-DT1.usma.ibm.com] out:
Fri Jan 02 12:54:49 - test
Fri Jan 02 12:54:49 - [InteractSL-DT1.usma.ibm.com] out:
Fri Jan 02 12:54:49 -
'test'
आप इस बुनियादी के साथ चारों ओर खेल सकते हैं इसे साफ करने का विचार। उत्पादन की शुरुआत में sudo
लाइन fabric.operations._run_command
से लगभग 900 लाइन के आसपास आती है। मुझे यकीन नहीं है कि आप इसे संशोधित कर सकते हैं।