16 |
16 |
|
17 |
17 |
import logging
|
18 |
18 |
import os
|
|
19 |
import hashlib
|
19 |
20 |
|
20 |
21 |
from quixote import get_publisher, get_session, get_request
|
21 |
22 |
|
... | ... | |
40 |
41 |
return False
|
41 |
42 |
|
42 |
43 |
|
43 |
|
class Formatter(logging.Formatter):
|
44 |
|
def format(self, record):
|
|
44 |
class RequestFilter(logging.Filter):
|
|
45 |
def filter(self, record):
|
45 |
46 |
request = get_request()
|
|
47 |
|
|
48 |
record.application = 'wcs'
|
|
49 |
record.tenant = '-'
|
|
50 |
record.ip = '-'
|
|
51 |
record.path = '-'
|
|
52 |
record.request_id = '-'
|
|
53 |
record.user_id = 'unlogged'
|
|
54 |
record.user_name = '-'
|
|
55 |
record.user_email = '-'
|
|
56 |
record.user_display_name = '-'
|
|
57 |
record.user_uuid = '-'
|
|
58 |
record.session_id = '[nosession]'
|
46 |
59 |
if request:
|
47 |
|
record.address = request.get_environ('REMOTE_ADDR', '-')
|
|
60 |
record.tenant = request.get_server()
|
|
61 |
record.ip = request.get_environ('REMOTE_ADDR', '-')
|
48 |
62 |
record.path = request.get_path()
|
|
63 |
record.request_id = id(request)
|
49 |
64 |
|
50 |
65 |
user = request.user
|
51 |
66 |
if user:
|
... | ... | |
53 |
68 |
user_id = user
|
54 |
69 |
else:
|
55 |
70 |
user_id = user.id
|
|
71 |
record.user_display_name = user.name or '-'
|
|
72 |
record.user_email = user.email or '-'
|
|
73 |
uuid = None
|
|
74 |
if record.name_identifiers:
|
|
75 |
uuid = record.user_uuid = user.name_identifiers[0]
|
|
76 |
record.user = user.email or uuid or user_id
|
56 |
77 |
if type(user_id) is str and user_id.startswith('anonymous-'):
|
57 |
78 |
user_id = 'anonymous'
|
58 |
79 |
else:
|
59 |
80 |
user_id = 'unlogged'
|
60 |
81 |
if BotFilter.is_bot():
|
61 |
82 |
user_id = 'bot'
|
|
83 |
record.user = 'bot'
|
62 |
84 |
record.user_id = user_id
|
63 |
|
else:
|
64 |
|
record.address = '-'
|
65 |
|
record.path = '-'
|
66 |
|
record.user_id = 'unlogged'
|
67 |
|
record.session_id = (get_request() and get_session() and \
|
68 |
|
get_session().get_session_id()) or '[nosession]'
|
|
85 |
if get_session():
|
|
86 |
# do not disseminate the real session_id
|
|
87 |
record.session_id = hashlib.md5(get_session().get_session_id()).hexdigest()
|
|
88 |
return True
|
69 |
89 |
|
|
90 |
|
|
91 |
class Formatter(logging.Formatter):
|
|
92 |
def format(self, record):
|
70 |
93 |
return logging.Formatter.format(self, record) \
|
71 |
|
.replace('\n', '\n ')
|
|
94 |
.replace('\n', '\n ')
|
72 |
95 |
|
73 |
96 |
|
74 |
97 |
def parse_logstream(stream):
|