2014-09-13 104 views
0

我試圖將我的web應用程序錯誤/異常記錄到文件和電子郵件。記錄到文件的作品,但不發送電子郵件。 Python版本是3.4。Python日誌記錄模塊不發送電子郵件

代碼:

# Filename: my_app/log.py 

import logging 
import logging.handlers 
from . import config 

LOG_FILENAME = '{}/logs/app.log'.format(config.module_path) 

# Logger and it's output level 
app_logger = logging.getLogger('my_app') 
app_logger.setLevel(logging.DEBUG) 

# File handler 
file_handler = logging.handlers.RotatingFileHandler(
    LOG_FILENAME, maxBytes=50000, backupCount=2) 

# Add smtp handler 
email_info = { 
    "mailhost": '{}:{}'.format(config.email["host"], config.email["port"]), 
    "fromaddr": ['[email protected]'], 
    "toaddrs": ['[email protected]'], 
    "subject": 'Kraken escaped!', 
    "credentials": (config.email["username"], config.email["passwd"]), 
    "secure":(), 
} 
smtp_handler = logging.handlers.SMTPHandler(**email_info) 

formatter = logging.Formatter(
    '<%(asctime)s - %(name)s - %(levelname)s> %(message)s') 

file_handler.setFormatter(formatter) 
smtp_handler.setFormatter(formatter) 

app_logger.addHandler(file_handler) 
app_logger.addHandler(smtp_handler) 






# Filename: my_app/delivery/controllers.py 

import logging 

logger = logging.getLogger(__name__) 

# ... and when exceptions occurs I do following (in except statement) 

logger.exception(exc) 

# As I've said - it gets logged to a file, but email is not sent (fails silently?). 

我在做什麼錯?

+0

您是否嘗試過' 「安全」:None',而不是' 「安全」:()'? – 2014-09-14 08:29:41

+0

@AnonyKong,是的,我試過了。也嘗試沒有'安全'。沒有什麼變化。 – egis 2014-09-14 11:02:37

回答

0

所以......我應該仔細閱讀文檔。它指出,如果端口不是'默認',那麼參數mailhost應該是(hostname, port)元組而不是'hostname:port'字符串。

修復是以下幾點:

email_info = { 
    "mailhost": (config.email["host"], config.email["port"]), 
    #.... 
} 
相關問題