Align logging messages of different levels
logging, module, python
Solution
Add a width to the `levelname` field in the formatter's format string.
This is left-aligned:
self.formatter = logging.Formatter('%(asctime)s %(levelname)-10s %(message)s')
levelname
|----------|
2013-03-20 16:46:50,573 INFO Enrty to Logging Module!!
2013-03-20 16:46:50,573 DEBUG This is Debugging Message!!
2013-03-20 16:46:50,573 INFO This is Info Message!!
2013-03-20 16:46:50,573 WARNING This is WARNING Message!!
This is right-aligned:
self.formatter = logging.Formatter('%(asctime)s %(levelname)10s %(message)s')
levelname
|----------|
2013-03-20 16:51:04,648 INFO Enrty to Logging Module!!
2013-03-20 16:51:04,650 DEBUG This is Debugging Message!!
2013-03-20 16:51:04,650 INFO This is Info Message!!
2013-03-20 16:51:04,650 WARNING This is WARNING Message!!
|0123456789|
| width=10 |
String formatting documentation
Problem
I'm using Python's `logging` module like this: ``` class InitLogging(): def LogModule(self): self.Logger = logging.getLogger("_TCP_Logger") self.Logger.LogLevel = logging.DEBUG self.Logger.setLevel(self.Logger.LogLevel) self.fh = logging.FileHandler("Log.txt") self.fh.level = logging.DEBUG self.formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)8s') self.Logger.addHandler(self.fh) self.Logger.log(logging.INFO,"=====================================") self.Logger.log(logging.INFO,"Start Logging Module!!") self.Logger.log(logging.INFO,"=====================================") self.fh .setFormatter(self.formatter) self.Logger.log(logging.INFO,"Enrty to Logging Module!!") class LogMsg(InitLogging): def Logit(self): self.LogModule() self.Logger.log(logging.DEBUG,'This is Debugging Message!!') self.Logger.log(logging.INFO,"This is Info Message!!") self.Logger.log(logging.WARNING,"This is WARNING Message!!") LoggingInstance = LogMsg() LoggingInstance.Logit() ``` When I run my code I get the output below in `Log.txt`: ``` ===================================== Start Logging Module!! ===================================== 2013-03-20 17:51:35,135 INFO Enrty to Logging Module!! 2013-03-20 17:51:35,135 DEBUG This is Debugging Message!! 2013-03-20 17:51:35,135 INFO This is Info Message! 2013-03-20 17:51:35,135 WARNING This is WARNING Message!! ``` But I'd like to align messages of different log levels together, producing output like below: ``` ===================================== Start Logging Module!! ===================================== 2013-03-20 17:51:35,135 INFO Enrty to Logging Module!! 2013-03-20 17:51:35,135 DEBUG This is Debugging Message!! 2013-03-20 17:51:35,135 INFO This is Info Message! 2013-03-20 17:51:35,135 WARNING This is WARNING Message!! ``` How can I do this?