Cut newline and spaces from Python Logger messages

I'm trying to set up a logger formatter that breaks all characters before any '\ n' or '\ t' messages.

Is there a way to do this by setting up a registration filter?

EDIT: I understand that I need str.strip (), but how can I integrate this with the logger for each message?

Here is an example of my logger setup:

def initialize_logging(log_dir='Logs', log_name='log.log', console_level='INFO', file_level='DEBUG'): start_time = datetime.datetime.now() start_time_string= start_time.strftime("%m-%d-%y_%Hh%Mm%Ss") if file_level == "DEBUG": level = logging.DEBUG elif file_level == "INFO": level = logging.INFO elif file_level == "WARNING": level = logging.WARNING elif file_level == "ERROR": level = logging.ERROR elif file_level == "CRITICAL": level = logging.CRITICAL else: level = logging.INFO log = logging.getLogger() log.setLevel(level) #create a log formatter formatter = logging.Formatter('%(asctime)s %(name)-24s: %(levelname)-8s: %(message)s','%m-%d-%y %H:%M:%S') #create log handlers #console handler console = logging.StreamHandler() if console_level == "DEBUG": console.setLevel(logging.DEBUG) elif console_level == "INFO": console.setLevel(logging.INFO) elif console_level == "WARNING": console.setLevel(logging.WARNING) elif console_level == "ERROR": console.setLevel(logging.ERROR) elif console_level == "CRITICAL": console.setLevel(logging.CRITICAL) else: console.setLevel(logging.INFO) console.setFormatter(formatter) log.addHandler(console) log_path = str(os.getcwd()) + '/Logs/' if not os.path.exists(log_path): os.makedirs(log_path) log_file_name = 'last.log' log_file = os.path.join(log_path, log_file_name) logfile = logging.FileHandler(log_file, "w") if file_level == "DEBUG": logfile.setLevel(logging.DEBUG) elif file_level == "INFO": logfile.setLevel(logging.INFO) elif file_level == "WARNING": logfile.setLevel(logging.WARNING) elif file_level == "ERROR": logfile.setLevel(logging.ERROR) elif file_level == "CRITICAL": logfile.setLevel(logging.CRITICAL) else: logfile.setLevel(logging.INFO) logfile.setFormatter(formatter) log.addHandler(logfile) return log #return a path to the log file 
+4
source share
3 answers

Since you are logging.Formatter input message yourself, you need to subclass logging.Formatter

 class WhitespaceRemovingFormatter(logging.Formatter): def format(self, record): record.msg = record.msg.strip() return super(WhitespaceRemovingFormatter, self).format(record) 
+4
source

Use the str.strip() method:

 >>> s= "\n\rrohit\n" >>> s.strip() 'rohit' 
0
source
 def logger(my_str): s = my_str.strip() print s logger("\n\ttest") 

From the docs:

 string.strip(s[, chars]) 

Return a copy of the string with leading and trailing characters removed. If chars is omitted or None, whitespace characters are removed. If given and not None, chars must be a string; the characters in the string will be stripped from the both ends of the string this method is called on.

0
source

Source: https://habr.com/ru/post/1494113/


All Articles