move debug logging into libanki

we want to be able to log the initial automatic sync, which
happens before the debug logging was set up in ankiqt

also skip the flush, as it should eventually get written
This commit is contained in:
Damien Elmes 2013-11-04 23:03:33 +09:00
parent 2e22b6218b
commit 5dfe95aa67
2 changed files with 30 additions and 27 deletions

View File

@ -2,12 +2,15 @@
# Copyright: Damien Elmes <anki@ichi2.net>
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
import pprint
import re
import time
import os
import random
import stat
import datetime
import copy
import traceback
from anki.lang import _, ngettext
from anki.utils import ids2str, fieldChecksum, stripHTML, \
@ -48,9 +51,12 @@ defaultConf = {
# this is initialized by storage.Collection
class _Collection(object):
debugLog = False
def __init__(self, db, server=False):
self.db = db
self.path = db._path
self._openLog()
self.log(self.path, anki.version)
self.server = server
self._lastSave = time.time()
@ -773,4 +779,25 @@ and queue = 0""", intTime(), self.usn())
##########################################################################
def log(self, *args, **kwargs):
runHook("log", args, kwargs)
if not self.debugLog:
return
def customRepr(x):
if isinstance(x, basestring):
return x
return pprint.pformat(x)
path, num, fn, y = traceback.extract_stack(
limit=2+kwargs.get("stack", 0))[0]
buf = u"[%s] %s:%s(): %s" % (intTime(), os.path.basename(path), fn,
", ".join([customRepr(x) for x in args]))
self._logHnd.write(buf.encode("utf8") + "\n")
if os.environ.get("ANKIDEV"):
print buf
def _openLog(self):
if not self.debugLog:
return
lpath = re.sub("\.anki2$", ".log", self.path)
self._logHnd = open(lpath, "ab")
def _closeLog(self):
self._logHnd = None

View File

@ -3,7 +3,6 @@
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
import os
import pprint
import sys
import re
import traceback
@ -32,6 +31,8 @@ class AnkiQt(QMainWindow):
self.state = "startup"
aqt.mw = self
self.app = app
from anki.collection import _Collection
_Collection.debugLog = True
if isWin:
self._xpstyle = QStyleFactory.create("WindowsXP")
self.app.setStyle(self._xpstyle)
@ -268,7 +269,6 @@ To import into a password protected profile, please open the profile before atte
def loadCollection(self):
self.hideSchemaMsg = True
self._openLog()
try:
self.col = Collection(self.pm.collectionPath())
except anki.db.Error:
@ -865,7 +865,6 @@ Difference to correct time: %s.""") % diffText
def setupHooks(self):
addHook("modSchema", self.onSchemaMod)
addHook("remNotes", self.onRemNotes)
addHook("log", self.onLog)
# Log note deletion
##########################################################################
@ -883,29 +882,6 @@ Difference to correct time: %s.""") % diffText
f.write(("\t".join([str(id), str(mid)] + fields)).encode("utf8"))
f.write("\n")
# Debug logging
##########################################################################
def onLog(self, args, kwargs):
if not self._logHnd:
return
def customRepr(x):
if isinstance(x, basestring):
return x
return pprint.pformat(x)
path, num, fn, y = traceback.extract_stack(
limit=4+kwargs.get("stack", 0))[0]
buf = u"[%s] %s:%s(): %s" % (intTime(), os.path.basename(path), fn,
", ".join([customRepr(x) for x in args]))
self._logHnd.write(buf.encode("utf8") + "\n")
self._logHnd.flush()
if os.environ.get("ANKIDEV"):
print buf
def _openLog(self):
lpath = re.sub("\.anki2$", ".log", self.pm.collectionPath())
self._logHnd = open(lpath, "ab")
# Schema modifications
##########################################################################