2009-02-10 37 views

回答

114

當然,在日誌文檔中檢查formatters。特別是lineno和pathname變量。

%(路徑)■其中記錄呼叫發出(如果可用)的源文件的完整路徑。

%(filename)s路徑名的文件名部分。

%(模塊)s模塊(文件名的名稱部分)。

%(funcName)s包含日誌記錄調用的函數的名稱。

%(lineno)d發出日誌記錄調用的源行號(如果可用)。

看起來是這樣的:

formatter = logging.Formatter('[%(asctime)s] p%(process)s {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s','%m-%d %H:%M:%S') 
+2

+1:Quote the文檔。 – 2009-02-10 16:35:47

11

Seb's very useful answer頂部,這裏是一個方便的代碼片段演示了一個合理的格式記錄器用法:

#!/usr/bin/env python 
import logging 

logging.basicConfig(format='%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s', 
    datefmt='%d-%m-%Y:%H:%M:%S', 
    level=logging.DEBUG) 

logger = logging.getLogger('stackoverflow_rocks') 
logger.debug("This is a debug log") 
logger.info("This is an info log") 
logger.critical("This is critical") 
logger.error("An error occurred") 

生成的輸出:

06-06-2017:17:07:02,158 DEBUG [log.py:11] This is a debug log 
06-06-2017:17:07:02,158 INFO  [log.py:12] This is an info log 
06-06-2017:17:07:02,158 CRITICAL [log.py:13] This is critical 
06-06-2017:17:07:02,158 ERROR [log.py:14] An error occurred 
+0

請使用以下格式:formatter = logging.Formatter( '%(asctime)s,%(levelname)-8s [%(filename)s:%(module)s:%(funcName)s:%(lineno) d]%(消息)s') – 2018-03-08 09:43:13

相關問題