2017-09-28 2 views
0

Die Hinrichtung von Robot Framework nimmt, wo Test.py als Bibliothek importiert wurde und testLog() ausgeführt wird, was wiederum die Einfuhren Logger.py und LogMessage() nennt.Logs mehrere Zeit gedruckt zu werden mit Filehandler in Python

Test.py

import Logger 
def testLog(): 
    Logger.LogMessage("This is the first line of the log file.") 
    Logger.LogMessage("This is the second line of the log file.") 
    Logger.LogMessage("This is the third line of the log file.") 

Logger.py

import logging 
def LogMessage(message): 
    LOG_FILENAME = "C://Log_Details".log" 
    logger = logging.getLogger()  
    logFileHandler = logging.FileHandler(LOG_FILENAME) 
    logger.addHandler(logFileHandler) 

Log_Details.log

This is the first line of the log file. 
This is the second line of the log file. 
This is the second line of the log file. 
This is the third line of the log file. 
This is the third line of the log file. 
This is the third line of the log file. 

Der Meldungslog Abschnitt in RIDE jede Zeile nur einmal während der Ausführung anmeldet, aber die Datei mit dem Namen Log_details.log druckt sie mehrmals, dh die 1. Zeile wird einmal eingeloggt, während die 2. wird doppelt geloggt und so weiter.

Antwort

1

Sie erhalten 1x Nachricht 1, 2x Nachricht 2 und 3x Nachricht 3. Das ist, weil Sie Ihre Logging-Setup als Teil Ihrer LogMessage Funktion ausführen und es in Ihnen jedes Mal, wenn Sie eine Nachricht log eine Datei Protokollhandler hinzufügen .. Nach dem ersten Aufruf haben Sie einen Handler, der Ihre Nachricht einmal protokolliert, nach dem zweiten Anruf haben Sie zwei Handler, die Ihre Nachricht zweimal protokollieren usw.

Um das zu vermeiden, möchten Sie Ihren Logger nur einmal konfigurieren. bewegen einfach Ihre Logging-Konfiguration auf eine Funktion, die Sie einmal rufen, wenn Sie Ihren Skript starten und von da an denen Sie gerade verwenden können:

import logging 
log = logging.getLogger(__name__) 
log.info('smth') 

, wenn Sie fühlen sich wie in Ihrer Anwendung in einer anderen Datei zu protokollieren.

Verwandte Themen