In a python logging is there a formatter to truncate the string?

hobs picture hobs · May 28, 2013 · Viewed 8.8k times · Source

Python logging formats strings with a syntax I don't see elsewhere in python, like

 'format': '%(name)s'

Is there any way to truncate an error message using the formatter, or do I need to override the LogRecord class for that?

This truncates parts of the message (though I can't find the documentation for this feature in the normal places):

 'format': '%(name).40s %(message).40s'

I'd rather truncate the entire formatted message, if possible (for an 80 column console, say).

Answer

Gerrat picture Gerrat · May 28, 2013

This is just the old style of string formatting. I think you can just use a ".L", where L is the length to truncate the string to whatever length you like. eg:

'format': '%(name).5s'  

would truncate the length to 5 characters.

It's a little hard to find, but they actually do mention it in the docs:

The precision is a decimal number indicating how many digits should be displayed after the decimal point for a floating point value formatted with 'f' and 'F', or before and after the decimal point for a floating point value formatted with 'g' or 'G'. For non-number types the field indicates the maximum field size - in other words, how many characters will be used from the field content