The opposite of logging.handlers.SocketHandler
Project description
ListeningSocketHandler
======================
The opposite of logging.handlers.SocketHandler
Example Usage
-------------
1. Create a logger
>>> import logging
>>> from ListeningSocketHandler import ListeningSocketHandler
>>> log = logging.getLogger()
>>> log.setLevel(logging.DEBUG)
2. Create some handlers
A normal StreamHandler that outputs to stderr and
a ListeningSocketHandler bound to port 12345.
>>> sh = logging.StreamHandler()
>>> sh.setLevel(logging.WARN)
>>> lh = ListeningSocketHandler(12345)
>>> lh.setLevel(logging.DEBUG)
3. Add handlers to the logger
>>> log.addHandler(sh)
>>> log.addHandler(lh)
4. Log some things
>>> log.info("An informational message")
>>> log.warn("A warning message")
A warning message
5. Connect to the logger, and log more detailed events
In a new shell, connect to the logger.
$ telnet localhost 12345
Back in python, use different log levels.
>>> log.critical("A critical message")
A critical message
>>> log.debug("A debugging message")
Watch the detailed stream in the telnet session.
A critical message
A debugging message
Making it work with Django
--------------------------
1. Install the handler
$ pip install LoggingSocketHandler
2. Add the ListeningSocketHandler to the LOGGING dict
LOGGING = {
...
'handlers': {
'listeningsocket': {
'level': 'DEBUG',
'class': 'ListeningSocketHandler.ListeningSocketHandler',
},
...
},
'loggers': {
'myapp': {
'handlers': ['listeningsocket'],
'level': 'DEBUG',
'propagate': True,
},
...
},
}
3. Run the server, and check the logs
$ ./manage.py runserver
ListeningSocketHandler on port: 40955
ListeningSocketHandler on port: 49830
Validating models...
0 errors found
Django version 1.4.2, using settings 'myproject.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
the default runserver is stupid, use foreman instead.
$ foreman start
17:55:11 web.1 | started with pid 24927
17:55:13 web.1 | ListeningSocketHandler on port: 36688
17:55:13 web.1 | Validating models...
17:55:13 web.1 |
17:55:13 web.1 | 0 errors found
17:55:13 web.1 | Django version 1.4.2, using settings 'myproject.settings'
17:55:13 web.1 | Development server is running at http://0.0.0.0:5000/
17:55:13 web.1 | Quit the server with CONTROL-C.
4. Connect to the socket (telnet, netcat etc.)
$ telnet localhost 36688
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
5. Use django normally, and watch the detailed logs scroll past your terminal,
or pipe them to a file for later analysis.
$ ncat localhost 36688 > detailed-log.txt
^C
Refresh the view, or perform the task to reproduce your bug, then break out
with Control-C when you've got the logs that you want.
======================
The opposite of logging.handlers.SocketHandler
Example Usage
-------------
1. Create a logger
>>> import logging
>>> from ListeningSocketHandler import ListeningSocketHandler
>>> log = logging.getLogger()
>>> log.setLevel(logging.DEBUG)
2. Create some handlers
A normal StreamHandler that outputs to stderr and
a ListeningSocketHandler bound to port 12345.
>>> sh = logging.StreamHandler()
>>> sh.setLevel(logging.WARN)
>>> lh = ListeningSocketHandler(12345)
>>> lh.setLevel(logging.DEBUG)
3. Add handlers to the logger
>>> log.addHandler(sh)
>>> log.addHandler(lh)
4. Log some things
>>> log.info("An informational message")
>>> log.warn("A warning message")
A warning message
5. Connect to the logger, and log more detailed events
In a new shell, connect to the logger.
$ telnet localhost 12345
Back in python, use different log levels.
>>> log.critical("A critical message")
A critical message
>>> log.debug("A debugging message")
Watch the detailed stream in the telnet session.
A critical message
A debugging message
Making it work with Django
--------------------------
1. Install the handler
$ pip install LoggingSocketHandler
2. Add the ListeningSocketHandler to the LOGGING dict
LOGGING = {
...
'handlers': {
'listeningsocket': {
'level': 'DEBUG',
'class': 'ListeningSocketHandler.ListeningSocketHandler',
},
...
},
'loggers': {
'myapp': {
'handlers': ['listeningsocket'],
'level': 'DEBUG',
'propagate': True,
},
...
},
}
3. Run the server, and check the logs
$ ./manage.py runserver
ListeningSocketHandler on port: 40955
ListeningSocketHandler on port: 49830
Validating models...
0 errors found
Django version 1.4.2, using settings 'myproject.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
the default runserver is stupid, use foreman instead.
$ foreman start
17:55:11 web.1 | started with pid 24927
17:55:13 web.1 | ListeningSocketHandler on port: 36688
17:55:13 web.1 | Validating models...
17:55:13 web.1 |
17:55:13 web.1 | 0 errors found
17:55:13 web.1 | Django version 1.4.2, using settings 'myproject.settings'
17:55:13 web.1 | Development server is running at http://0.0.0.0:5000/
17:55:13 web.1 | Quit the server with CONTROL-C.
4. Connect to the socket (telnet, netcat etc.)
$ telnet localhost 36688
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
5. Use django normally, and watch the detailed logs scroll past your terminal,
or pipe them to a file for later analysis.
$ ncat localhost 36688 > detailed-log.txt
^C
Refresh the view, or perform the task to reproduce your bug, then break out
with Control-C when you've got the logs that you want.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Close
Hashes for ListeningSocketHandler-0.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8a8bb933d4841e5a02269b05bce87b35838224e74678604fb9cd787b6c68d5f |
|
MD5 | f6866317c3cc9b81e3729a441c1b2dbd |
|
BLAKE2b-256 | b59855ecabfaa20d50f0f26ad72696037eb3342a7546a0ac329b935fb2ed0e7d |