2014年7月29日 星期二

Python - 自訂訊息格式

Python有很好用的logging函式庫,並不必要自己去定義打印訊息的方法。下面僅是提供一個簡單的例子,說明如果想要取得呼叫來源的檔名和行數,可以利用traceback的堆疊訊息。
import traceback
import os, time

def __formalizeMessage(message):
    FILE, LINE, FUNCTION, TEXT = (0, 1, 2, 3)
    stack = traceback.extract_stack(limit = 3)
    return "{file}({line}) - {message}".format(file = os.path.split(stack[0][FILE])[-1], line = stack[0][LINE], message = message)

def printError(message):
    print("{0} [Error] {1}".format(time.asctime(), __formalizeMessage(message)))

def main():
    printError("Hello")  # The line number is 12.

if __name__ == "__main__":
    main()

打印出來的訊息為:
Wed Jul 30 14:56:05 2014 [Error] test.py(12) - Hello

沒有留言: