Reputation: 4596
I need to log data to file and also to console. I setup it like this:
# set up logging
logging.basicConfig(level = logging.INFO,
format ='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
datefmt ='%Y-%m-%d %H:%M:%S',
handlers=[logging.FileHandler(dir + '/log.log'), logging.StreamHandler()]
)
Then i add data like this: logging.info('Server started')
. In console i see the text, but file is empty. If I delete tgis file python creates new one, but still it is empty.
Upvotes: 2
Views: 3661
Reputation: 2260
Its just a case of setting of multiple handlers for the same error level.
Remove basicConfig line and do something similar to below
See this example of how to do this:
import logging
log_formatter = logging.Formatter('%(asctime)s %(levelname)s %(funcName)s(%(lineno)d) %(message)s',
datefmt='%d/%m/%Y %H:%M:%S')
#File to log to
logFile = 'C:\\Temp\\log'
#Setup File handler
file_handler = logging.FileHandler(logFile)
file_handler.setFormatter(log_formatter)
file_handler.setLevel(logging.INFO)
#Setup Stream Handler (i.e. console)
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(log_formatter)
stream_handler.setLevel(logging.INFO)
#Get our logger
app_log = logging.getLogger('root')
app_log.setLevel(logging.INFO)
#Add both Handlers
app_log.addHandler(file_handler)
app_log.addHandler(stream_handler)
#Write some Data
while True:
app_log.info("data")
Upvotes: 11