这就是我app
目前的设置方式:
目录
/xampp/code/menumaster
menumaster
__init__.py
views.py
sqltables.py
__初始化__。PY
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from sqlalchemy.orm import sessionmaker
from sqlalchemy import *
app = Flask(__name__)
app.debug = True
DBSession = sessionmaker(bind=engine)
import menumaster.views
views.py
from menumaster import app, DBSession
@app.route('/restaurants', methods = ['GET'])
def getRestaurants():
# Code here...
我想知道我应该在何处以及如何配置logger
,这样我就可以在不同的模块中使用它并写入某个文件mylog.txt
。
我见过这样的例子:https://gist.github.com/ibeex/3257877#file-foo-log
但是,在我的代码中我不使用
if __name__ == '__main__':
我应该在logger
文件中添加__init__.py
配置代码并从那里尝试调用吗?任何帮助以正确的方式做到这一点将不胜感激。
更新
我的代码目前看起来像这样:
views.py
import logging
import logging.config
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d % (thread)d %(message)s'
},
},
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'error.log',
'formatter': 'verbose',
},
},
'loggers': {
'': {
'level': 'WARN',
'handlers': ['file'],
},
}
}
logging.config.dictConfig(LOGGING)
logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
logger = logging.getLogger('__name__')
@app.route('/restaurants', methods = ['GET'])
def getRestaurants():
logger.debug('write something to log file')
return 'something'
我目前有两个问题:
1)文字"write something to log file"
未出现在error.log
。
2)当我从setLevel(logging.INFO)
删除logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
时,没有任何内容写入error.log
。我认为这可行,因为此信息已在LOGGING
变量中设置。
我尝试将handler
和logger
级别更改为INFO
中的LOGGING
,但无济于事。
答案 0 :(得分:1)
最佳做法是每个Python模块都声明自己的记录器:
import logging
logger = logging.getLogger(__name__)
然后,您可以使用标准Python日志记录配置来增加或减少每个模块的日志记录详细程度,并将不同模块的日志输出重定向到不同的日志记录处理程序/文件。
See configuring Python logging
下面是一个简单的日志配置文件,显示了如何设置文件日志记录:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
},
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'logs/django.log',
'formatter': 'verbose',
},
},
'loggers': {}
'': {
'level': 'WARN',
'handlers': ['file'],
},
}
}