Skip to content

Commit bd2e087

Browse files
committed
Provide more info in log context, ideally we could just pass client/upstream/request/response objects but for now passing dict is ok
1 parent 541da11 commit bd2e087

File tree

6 files changed

+30
-11
lines changed

6 files changed

+30
-11
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
[![Proxy.Py](https://github.com/raw/abhinavsingh/proxy.py/develop/ProxyPy.png)](https://github.com/abhinavsingh/proxy.py)
22

3+
<p style="text-align: center;">
4+
⚡ Fast • 🪶 Lightweight • 0️⃣ Dependency • 🔌 Pluggable • 😈 TLS interception • 🔒 DNS-over-HTTPS • 🔥 Poor Man's VPN • ⏪ Reverse & ⏩ Forward • 👮🏿 "Proxy Server" framework • 🌐 "Web Server" framework • ➵ ➶ ➷ ➠ "PubSub" framework • 👷 "Work" acceptor & executor framework
5+
</p>
6+
37
[![PyPi Monthly](https://img.shields.io/pypi/dm/proxy.py?style=for-the-badge&color=darkgreen)](https://pypi.org/project/proxy.py/)
48
[![Docker Pulls](https://img.shields.io/docker/pulls/abhinavsingh/proxy.py?style=for-the-badge&color=darkgreen)](https://hub.docker.com/r/abhinavsingh/proxy.py)
59
[![No Dependencies](https://img.shields.io/static/v1?label=dependencies&message=0&style=for-the-badge&color=darkgreen)](https://github.com/abhinavsingh/proxy.py)

proxy/common/flag.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ def initialize(
122122
sys.exit(1)
123123

124124
# Setup logging module
125-
Logger.setup_logger(args.log_file, args.log_level, args.log_format)
125+
Logger.setup(args.log_file, args.log_level, args.log_format)
126126

127127
# Setup limits
128128
set_open_file_limit(args.open_file_limit)

proxy/common/logger.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"""
1111
import logging
1212

13-
from typing import Optional
13+
from typing import Optional, Union
1414

1515
from .constants import DEFAULT_LOG_FILE, DEFAULT_LOG_FORMAT, DEFAULT_LOG_LEVEL
1616

@@ -23,22 +23,28 @@
2323
}
2424

2525

26+
def single_char_to_level(char: str) -> str:
27+
return getattr(logging, SINGLE_CHAR_TO_LEVEL[char.upper()[0]])
28+
29+
2630
class Logger:
2731
"""Common logging utilities and setup."""
2832

2933
@staticmethod
30-
def setup_logger(
34+
def setup(
3135
log_file: Optional[str] = DEFAULT_LOG_FILE,
3236
log_level: str = DEFAULT_LOG_LEVEL,
3337
log_format: str = DEFAULT_LOG_FORMAT,
3438
) -> None:
35-
ll = getattr(logging, SINGLE_CHAR_TO_LEVEL[log_level.upper()[0]])
3639
if log_file:
3740
logging.basicConfig(
3841
filename=log_file,
3942
filemode='a',
40-
level=ll,
43+
level=single_char_to_level(log_level),
4144
format=log_format,
4245
)
4346
else:
44-
logging.basicConfig(level=ll, format=log_format)
47+
logging.basicConfig(
48+
level=single_char_to_level(log_level),
49+
format=log_format,
50+
)

proxy/core/acceptor/acceptor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ def run_once(self) -> None:
9696
self._work(conn, addr)
9797

9898
def run(self) -> None:
99-
Logger.setup_logger(
99+
Logger.setup(
100100
self.flags.log_file, self.flags.log_level,
101101
self.flags.log_format,
102102
)

proxy/core/acceptor/threadless.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ def run_once(self) -> None:
202202
self.cleanup_inactive()
203203

204204
def run(self) -> None:
205-
Logger.setup_logger(
205+
Logger.setup(
206206
self.flags.log_file, self.flags.log_level,
207207
self.flags.log_format,
208208
)

proxy/http/proxy/server.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -322,12 +322,21 @@ def on_client_connection_close(self) -> None:
322322
context = {
323323
'client_ip': None if not self.client.addr else self.client.addr[0],
324324
'client_port': None if not self.client.addr else self.client.addr[1],
325-
'request_method': text_(self.request.method),
326-
'request_path': text_(self.request.path),
327325
'server_host': text_(self.upstream.addr[0] if self.upstream else None),
328326
'server_port': text_(self.upstream.addr[1] if self.upstream else None),
329-
'response_bytes': self.response.total_size,
330327
'connection_time_ms': '%.2f' % ((time.time() - self.start_time) * 1000),
328+
# Request
329+
'request_method': text_(self.request.method),
330+
'request_path': text_(self.request.path),
331+
'request_bytes': self.request.total_size,
332+
'request_code': self.request.code,
333+
'request_ua': self.request.header(b'user-agent')
334+
if self.request.has_header(b'user-agent')
335+
else None,
336+
'request_reason': self.request.reason,
337+
'request_version': self.request.version,
338+
# Response
339+
'response_bytes': self.response.total_size,
331340
'response_code': text_(self.response.code),
332341
'response_reason': text_(self.response.reason),
333342
}

0 commit comments

Comments
 (0)