【发布时间】:2013-11-20 11:02:05
【问题描述】:
我有一个瓶子网络应用程序,我正试图登录到一个文件。
每个页面访问都会实例化一个新类,因此我尝试将每个类的记录器链接到模块记录器,以便它们都记录到同一个文件。
两个问题:
A) 如果类的多个实例同时记录,这会导致文件写入冲突吗?我认为没有,因为他们通过模块级记录器。我是否正确创建了这个?
B) 我的 logfile.log 文件中没有显示任何内容。我不确定问题出在哪里。
from bottle import route, run
import logging
logger = logging.getLogger('server')
fh = logging.FileHandler('./log/logfile.log')
fh.setLevel(logging.ERROR)
logger.addHandler(fh)
class userclass:
def __init__(self,name):
self.logger = logging.getLogger('server.userclass')
self.name = name
try:
raise Exception("Uh oh!")
except Exception as e:
self.logger.error("There's a problem.")
return
@route('/<name>')
def user(name):
newuser = userclass(name)
run(host='localhost', port=8080, debug=True)
【问题讨论】:
-
Python 可能对日志文件很懒惰并且没有刷新它。尝试优雅地关闭进程并然后检查日志文件
-
尝试停止进程然后检查文件...仍然没有。
-
我在我的系统上进行了尝试,它按预期工作:日志包含一个“有问题”。对于每个匹配的请求。我复制并粘贴了问题中的代码,然后创建了一个
log子目录,然后运行了脚本。 (Python 2.7,Ubuntu)。我不得不将使用的端口更改为 8000,但我没有进行其他更改。 -
好的,很好。我在带有 Python 2.7 的 Windows 7 上。它正在创建文件,但是当我在记事本中打开它时,里面什么都没有。
-
刚刚将其克隆到 Linux AWS 实例,您是对的……完美运行。知道 Windows 上的问题是什么吗?
标签: python logging scope bottle python-module