我已经阅读了我能找到的所有内容,但我遇到了障碍。我已经设置了在本地主机上运行时的错误日志记录,但是当我在生产服务器 (IIS) 上运行它时,没有创建日志文件,也没有发送电子邮件报告。
我使用的基本设置是一个简单的 'app.py' 和 IIS 中的 'wfastcgi' 模块。
根据我的(有限)理解,在阅读后,似乎 WSGI 是开发(本地主机)和生产服务器(我认为?)之间的关键区别。
这是我一直在尝试的代码(适用于 localhost,但不适用于 IIS):
[请注意,这是一个原型版本,因此是简单的 'app.py'、'app.run()' 等......最终版本实现了 Flask 'Application Factory' 设置。出于安全原因删除了各种值]
app = Flask(__name__)
app.config['SECRET_KEY'] = SECRET
** APP LOGIC HERE **
if __name__ == "__main__":
if not app.debug:
if not os.path.exists(os.path.join(app.root_path, 'logs')):
os.mkdir(os.path.join(app.root_path, 'logs'))
class ErrorFormatter(logging.Formatter):
def format(self, record):
if current_user.is_authenticated:
record.email = str(decrypt(current_user.email))
else:
record.email = "GUEST"
return super().format(record)
formatter = ErrorFormatter(
'\n=========================\n\n%(asctime)s %(levelname)s: [User: %(email)s]\n%(message)s [in %(pathname)s:%(lineno)d]\n\n'
)
file_handler = RotatingFileHandler(os.path.join(app.root_path, 'logs', 'error_log.log'), maxBytes=102400, backupCount=10)
file_handler.setFormatter(formatter)
file_handler.setLevel(logging.ERROR)
app.logger.addHandler(file_handler)
auth = (EMAIL, PASSWORD)
secure = ()
mail_handler = SMTPHandler(
mailhost=(SERVER, PORT),
fromaddr=EMAIL,
toaddrs=RECIPIENT,
subject=SUBJECT,
credentials=auth,
secure=secure
)
mail_handler.setFormatter(formatter)
mail_handler.setLevel(logging.ERROR)
app.logger.addHandler(mail_handler)
app.run(host=HOST, debug=False)
也许我应该对 web.config 文件做些什么?
任何帮助将不胜感激。谢谢。