【问题标题】:In a python logging is there a formatter to truncate the string?在 python 日志记录中是否有一个格式化程序来截断字符串?
【发布时间】:2013-05-23 20:08:10
【问题描述】:

Python logging 使用我在 python 其他地方看不到的语法格式化字符串,比如

 'format': '%(name)s'

有什么方法可以使用格式化程序截断错误消息,还是我需要为此重写 LogRecord 类?

这会截断部分消息(尽管我在 normal places 中找不到此功能的文档):

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

如果可能的话,我宁愿截断整个格式化消息(例如,对于 80 列控制台)。

【问题讨论】:

    标签: python logging formatting string-formatting formatter


    【解决方案1】:

    这只是字符串格式的旧样式。 我认为您可以只使用“.L”,其中 L 是将字符串截断为您喜欢的任何长度的长度。例如:

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

    会将长度截断为 5 个字符。

    有点难找,但他们确实在docs 中提到过:

    精度是一个十进制数,表示对于格式为“f”和“F”的浮点值,应在小数点后显示多少位,对于格式为“”的浮点值,应在小数点前后显示多少位g'或'G'。对于非数字类型,该字段表示最大字段大小 - 换句话说,从字段内容中将使用多少个字符

    【讨论】:

    • 是的,我在写完问题后想到了这一点,并进行了编辑以包含您上面的建议(对于消息中的各个占位符确实有效)。
    • 所以我想我的问题并没有真正的意义。您可以传递给格式化程序的只是旧式字符串格式化程序。从该格式化程序规范中询问格式化结果的格式化是没有意义的。
    • 看起来您在 Python 3.2+ 中拥有更多控制权,因为您可以覆盖 LogRecord Creation:plumberjack.blogspot.ca/2010/12/…
    • 有没有办法从左边截断?
    • @OrangeDog:有趣的问题,但我不这么认为。
    猜你喜欢
    • 1970-01-01
    • 2011-11-02
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    相关资源
    最近更新 更多