0

The execution takes place from Robot Framework, where Test.py has been imported as a library and testLog() is being executed, which in turn imports Logger.py and calls LogMessage().

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.  

The message log section in RIDE logs each line just once during execution, but the file named Log_details.log prints them multiple times, i.e the 1st line gets logged once while the 2nd gets logged twice and so on.

1 Answer 1

1

You get 1x message 1, 2x message 2 and 3x message 3. That is because you perform your logging setup as part of your LogMessage function and in there you add a file log handler every time you log a message... so after first run you have 1 handler that logs your message once, after second call you have 2 handlers that log your message twice and so on...

To avoid that just you want to configure your logger only once. Just move your logging config to a function that you will call once when you start your script and from then on you can just use:

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

whenever you feel like logging in any other file in your application.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.