【发布时间】:2016-10-13 04:38:18
【问题描述】:
我在views.py 中有一个自定义的日志配置,如下所示:
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# Handlers
log_handlers = {
"terminal": logging.StreamHandler(),
"file_debug": logging.FileHandler("/var/log/eshot-api/{name}-{level}.log".format(name=__name__, level="DEBUG"), mode="w"),
"file_error": logging.FileHandler("/var/log/eshot-api/{name}-{level}.log".format(name=__name__, level="ERROR"), mode="w")
}
log_handlers["terminal"].setLevel(logging.INFO)
log_handlers["file_debug"].setLevel(logging.DEBUG)
log_handlers["file_error"].setLevel(logging.ERROR)
# Formatters
log_formatters = {
"terminal": logging.Formatter("[%(name)s]::[%(levelname)s]@[%(asctime)s]: %(message)s"),
"file_debug": logging.Formatter("[%(levelname)s]@[%(asctime)s]: %(message)s"),
"file_error": logging.Formatter("[%(asctime)s]: %(message)s")
}
for k, v in log_formatters.items():
log_handlers[k].setFormatter(v)
我已经创建了一个/var/log/eshot-api 的目录,并授予了chmod 777 对该目录的权限,这样写入就不会有问题了。
我还创建了如下函数:
def initial_log(request, method):
logger.debug("{ip} requested {path} with {kwargs} in {method} method".format(ip=ipaddr(request), path=request.get_full_path(), kwargs=str(dict(request.GET)), method=method))
method参数是将“GET”或“POST”传递给此函数的字符串。
我把这个放在我所有get 函数ClassBasedView 的开头。但是,当我运行并刷新页面几次以生成一些日志并查看我的日志文件时,它们是空的。
而且,我想提一下,这是我自己电脑上的开发服务器。
环境
- django 1.9.6
- ubuntu 14.04
- python 3.5.1
【问题讨论】:
-
Why Django logging is not working 的可能重复项。同时向我们展示您的
LOGGING配置。
标签: django python-3.x logging