-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathloggerFct.py
More file actions
executable file
·114 lines (100 loc) · 3.51 KB
/
loggerFct.py
File metadata and controls
executable file
·114 lines (100 loc) · 3.51 KB
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/usr/bin/python3.6
# -*- coding: utf-8 -*-
from datetime import datetime
from inspect import stack
from fileLocal import pathRoot, pathDesktop
logDate = False
def traceLine():
stackList = stack()
stackLen = len (stackList)
i=0
while i< stackLen and __file__ in stackList[i].filename: i+=1
strNum = str (stackList[i].lineno)
while len (strNum) <3: strNum = strNum +' '
strFile = stackList[i].filename
strFile = strFile.replace ('AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\', "")
strFile = strFile.replace ('\\__init__.py', "")
strFile = strFile.replace (pathDesktop + 'python\\', "")
strFile = strFile.replace (pathDesktop, "")
strFile = strFile.replace (pathRoot, "")
return '%s\t%s %s' % (strFile, strNum, stackList[i].function)
def computeTrace():
# date est un objet datetime.datetime
now = datetime.today()
strDate = '%02d:%02d:%02d:%02d'% (now.hour, now.minute, now.second, now.microsecond)
strDate = strDate[:12]
while len (strDate) <13: strDate = strDate +' '
return strDate
def objToStr (message):
if type (message) == int and message ==0: return 'O'
elif type (message) == bool:
if message: return 'oui'
else: return 'non'
elif not message: return ""
elif type (message) == dict:
messageKeys = list (message.keys())
res = "dictionnaire à "+ objToStr (len (messageKeys)) + " entrées\n"
nbkeys = len (messageKeys)
if nbkeys >10: nbkeys =10
rkeys = range (nbkeys)
for k in rkeys: res = res + objToStr (messageKeys[k]) +"\t"+ objToStr (message[messageKeys[k]]) +"\n"
return res
elif type (message) == list:
res = "liste à "+ objToStr (len (message)) + " éléments\n"
for line in message[:10]: res = res + objToStr (line) +"\n"
return res
elif type (message) == str: return message[:100]
else: return str (message)
def logInfo():
trace = traceLine()
if logDate: trace = computeTrace() + trace
print (trace)
def message (message):
trace = traceLine()
if logDate: trace = computeTrace() + trace
res = objToStr (message)
trace = trace +'\t'+ res
print (trace)
def coucou ():
message ('coucou')
def log (*messages):
trace = traceLine()
if logDate: trace = computeTrace() + trace
for message in messages:
res = objToStr (message)
if '\n' in res or len (res) >300: trace = trace +'\n'+ res
else: trace = trace +'\t'+ res
print (trace)
def exists (obj):
if (obj): message (obj)
else: message ('objet null')
alphabet = 'abcdefghijklmnopqrstuvwxyz'
letterPos =0
def letter():
log (alphabet [letterPos])
letterPos = letterPos +1
if letterPos >25: letterPos =0
# afficher l'aide basique pour un objet. conçu pour mes classes perso
def findParentsClasses (classObj):
name = classObj.__name__
methods =[]
for item in classObj.__dict__:
if classObj.__dict__[item] and 'function' == type (classObj.__dict__[item]).__name__: methods.append (item)
if 'object' != classObj.__bases__[0].__name__:
for parent in classObj.__bases__:
parentName, parentMethods = findParentsClasses (parent)
name = name +", "+ parentName
for parentMethod in parentMethods:
if parentMethod not in methods: methods.append (parentMethod)
return name, methods
def manual (item):
text = 'object of class %s, in module %s\nfields: ' % (item.__class__.__name__, item.__class__.__module__)
for field in item.__dict__: text = text + field +", "
text = text[:-2]
name, methods = findParentsClasses (item.__class__)
eraseInit = methods.pop (0)
text = text +'\nmethods: '+ ", ".join (methods)
posClassName =1+ name.find (', ')
name = name[posClassName:]
text = text +'\nparents:' + name
return text