2011-08-24 69 views
5

我正在尋找一種在Python日誌格式化程序中執行部分字符串格式化的方法。

當試圖定義一個格式化的方式如下:
在Python日誌格式化程序中部分字符串格式化

formatter = logging.Formatter('[num-%d] %(levelname)s %(message)s' % (num,))

我會得到一個類型錯誤使用「格式要求的映射」,這是合理的解釋無法找到「levelname」和'信息'。

當然,我希望'levelname'和'message'保持未格式化的日誌框架來處理。

依我之見,有解決這個問題的另外兩種方式:

  1. format = '[num-' + str(num) + '] %(levelname)s %(message)s' % (num,)
  2. format = '[num-%(num)d] %(levelname)s %(message)s' % dict(num=num, levelname='%(levelname)s', message='%(message)s')

不過,我覺得這兩種解決方案有點醜,我相信有必須是更好的方式來格式化部分字符串 - 無論是在Python中,還是在Python內置日誌框架中使用。

任何想法?

+0

重複http://stackoverflow.com/questions/4928526/python-format-string – Stefano

回答

5

試試這個:

formatter = logging.Formatter('[num-%d] %%(levelname)s %%(message)s' % (num,)) 

你得給Formatter方法的字符串%(...)s領域。 %%將解釋爲%,因此可以使用。

+0

很好,謝謝! – amito