2017-02-03 1 views
0

Ich muss ein Shell-Skript verwenden, um Python-Datei auszuführen und alle Python-Skript-Ausgabe in eine Protokolldatei speichern. Unten ist ein Beispiel Shell-Skript:Wie man einige Aussage zur Konsole druckt, während alle anderen Nachrichten in eine Protokolldatei umgeleitet werden?

#!/bin/bash 
python script.py > logFile.log 2>&1 

Allerdings muss ich einige Anweisungen in Python-Skript auf eine Konsole drucken. Wenn das Python-Skript beispielsweise zwei ähnliche print-Anweisungen enthält, enthält die aus dem Shell-Skript generierte Protokolldatei beide Anweisungen, und ich möchte auch statement2 zur Konsole drucken.

print("statement1") 
print("statement2") # also want to print this statement to console 

Ich habe versucht, Python Logging-Modul, aber konnte es nicht zu arbeiten.

Danke,

Antwort

0

Sie sollten wirklich das Logging-Modul dafür verwenden.

Versuchen Sie Folgendes:

import logging 

# Logging 
log = logging.getLogger("log") 
log2 = logging.getLogger("log2") 
log.setLevel(logging.DEBUG) 
log2.setLevel(logging.DEBUG) 
format = logging.Formatter(fmt = "%(asctime)s - %(module)s - %(levelname)s: %(message)s", datefmt = "%d-%m-%Y %H:%M") 

# For first file 
logfile = logging.FileHandler("file.log") 
logfile.setFormatter(format) 
log.addHandler(logfile) 

# For second file 
logfile2 = logging.FileHandler("file2.log") 
logfile2.setFormatter(format) 
log2.addHandler(logfile2) 

log.debug("test") 
log2.debug("test2") 

Dadurch entstehen zwei Datei-Handler, die mit log und log2 verwendet werden kann.

Erzeugt zwei Dateien im aktuellen Ordner: file.log und file2.log.

+0

Danke, vielleicht war ich in meiner Frage nicht klar. Anstelle von einfachen Abzügen in meinem Beispiel habe ich viele Operationen mit externen Modulen wie Tensorflow (Deeplearning-Modul), und ich wollte die Ausgabe dieser Operationen (sehr lang) in das Protokoll (durch Umleiten). Ich möchte drucken, um die wichtigsten Ergebnisse nach all den Operationen zu trösten .. Nicht sicher, wie ich Ihr Beispiel in meiner Situation verwenden kann. – user32147

Verwandte Themen