-
Notifications
You must be signed in to change notification settings - Fork 0
/
applog.py
73 lines (60 loc) · 1.88 KB
/
applog.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
from __future__ import print_function
import getpass
import os
import tempfile
import logging
from decorator import decorator
@decorator
def logtrace(aFunc, *args, **kw):
"""
:param aFunc:
:param args:
:param kw:
:return: :raise:
"""
AppLog.log.debug("enter %s", aFunc.__name__)
try:
result = aFunc(*args, **kw)
except Exception, e:
AppLog.log.exception("exception %s %s", aFunc.__name__, e)
raise
AppLog.log.debug("exit %s", aFunc.__name__)
return result
class AppLog(object):
def __init__(self):
username = getpass.getuser()
userpath = os.path.expanduser('~' + username)
logdirpath = os.path.join(userpath, 'finalog')
AppLog.gdrivepath = os.path.join(userpath, "Desktop", "gdrive")
AppLog.outdir = os.path.join(AppLog.gdrivepath, "finase_reports")
if not os.path.exists(logdirpath):
os.makedirs(logdirpath)
if not os.path.exists(AppLog.outdir):
os.makedirs(AppLog.outdir)
fd = tempfile.NamedTemporaryFile(dir=logdirpath,
delete=False)
print("Created ", fd.name)
logname = fd.name
fd.close()
AppLog.log = logging.getLogger("Finase")
handler = logging.FileHandler(logname)
AppLog.log.addHandler(handler)
AppLog.log.propagate = False
AppLog.log.setLevel(logging.DEBUG)
AppLog.outf = tempfile.NamedTemporaryFile(dir=AppLog.outdir,
prefix="finrep_",
delete=False)
print("Output file is ", AppLog.outf.name)
@staticmethod
def out(*args):
print(*args, file=AppLog.outf)
AppLog.outf.flush()
AppLog()
@logtrace
def main():
"""
test AppLog
"""
AppLog.out("hello")
if __name__ == '__main__':
main()