2013-05-28 6 views
5

Python logging форматирует строки с синтаксисом, я не вижу в другом месте в Python, какВ протоколе python есть форматирование, чтобы обрезать строку?

'format': '%(name)s' 

Есть ли способ укоротить сообщение об ошибке с помощью форматера, или мне нужно переопределить класс LogRecord для этого?

Это отсекает часть сообщения (хотя я не могу найти документацию для этой функции в normal places):

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

Я предпочел бы усечение весь отформатирован сообщение, если это возможно (для 80 колонка консоли, скажем).

ответ

10

Это только старый стиль форматирования строк. Я думаю, вы можете просто использовать «.L», где L - это длина, чтобы усечь строку до любой длины, которая вам нравится. например:

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

усекает длину до 5 символов.

Это немного трудно найти, но они на самом деле говорить об этом в docs:

Точность является десятичное число, указывающее, сколько цифр должно отображаться после десятичной точки для значения с плавающей точкой отформатированный с 'f' и 'F', или до и после десятичной точки для значения с плавающей запятой, форматированного с помощью 'g' или 'G'. Для типов, отличных от числа, поле указывает максимальный размер поля - другими словами, сколько символов будет использовано из поля.

+0

Я подумал об этом после написания вопроса и отредактировал, чтобы включить ваше предложение выше (которое работает, для отдельных заполнителей в сообщении). – hobs

+0

Итак, я думаю, мой вопрос не имеет смысла. Все, что вы можете передать в форматирование, это форматирование строки старого стиля. Не имеет смысла спрашивать о форматировании результата форматирования из этой спецификации форматирования. – hobs

+1

Похоже, у вас есть немного больше контроля в Python 3.2+, так как вы можете переопределить создание LogRecord: http://plumberjack.blogspot.ca/2010/12/getting-more-control-over-logrecord.html – Gerrat

 Смежные вопросы

  • Нет связанных вопросов^_^