我有一个瓶子网络应用程序,我试图登录到文件。
每个页面访问实例化一个新类,所以我试图将每个类的记录器链接到模块记录器,以便它们都记录到同一个文件。
两个问题:
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)
答案 0 :(得分:0)
替换:
logger = logging.getLogger('server')
fh = logging.FileHandler('./log/logfile.log')
fh.setLevel(logging.ERROR)
logger.addHandler(fh)
使用:
logging.basicConfig(level=logging.ERROR, filename='./log/logfile.log')
您需要先使用logging.basicConfig()
功能启动记录器。这将在根记录器中创建一个基本配置,通过logging.getLogger()
获得的所有其他记录器将使用此基础 - 您可以随时为这些新日志添加处理程序,更改其格式,甚至他们的级别 - 但您需要先在根记录器上调用基本配置。