![]() |
python logger help ... save logger into different folder - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: python logger help ... save logger into different folder (/thread-38521.html) |
python logger help ... save logger into different folder - mg24 - Oct-25-2022 Hi Team, I am using below code for logger. Created logger function. and calling that function its working. I want to save logger file into different folder. my below code saves logger file into same folder. is there any improvement possible in existing code. import logging def get_custom_logger(level,fname,logger_name,mode_type): logger = logging.getLogger(logger_name) logger.setLevel(level) fileHandler = logging.FileHandler(f'{fname}', mode=mode_type) fileHandler.setLevel(level) formatter = logging.Formatter( '%(asctime)s:%(levelname)s:%(name)s:%(message)s', datefmt = '%d/%m/%Y %I:%M:%S %p') fileHandler.setFormatter(formatter) logger.addHandler(fileHandler) return logger Calling function import logging logger = get_custom_logger(logging.DEBUG,"test.log",'table1',"w") logger.warning('new warning message from test module') logger.warning('info message from test module') logger.warning('new warning message from test module') Output :- 25/10/2022 06:30:17 PM:WARNING:table1:new warning message from test module 25/10/2022 06:30:17 PM:INFO:table1:info message from test module 25/10/2022 06:30:17 PM:WARNING:table1:new warning message from test module RE: python logger help ... save logger into different folder - snippsat - Oct-25-2022 Just give path to folder you want to save to. logging.FileHandler('G:/div_code/web_env/logg.log', mode=mode_type)Your f-string dos nothing on line 5. fileHandler = logging.FileHandler(f'{fname}', mode=mode_type) # Same fileHandler = logging.FileHandler(fname, mode=mode_type)Can make Path with f-string eg like this. >>> fname = 'logg.log' >>> folder_path = 'G:/div_code/web_env/' >>> f'{path}{fname}' 'G:/div_code/web_env/logg.log'I would adivice to use loguru ,then all the ugly boilerplate code is gone. from loguru import logger logger.remove() # Only log info to file logger.add(r"G:\div_code\web_env\error.log", rotation="2 day") @logger.catch def foo(): return 1 / 0 foo() |