Skip to main content

An async TCP logging server base on tornado.ioloop, which serve for logging.handlers.SocketHandler.

Project description

LoggerServer Documentation
==========================

:doc:`logger_server.server` is an async TCP logging server base on `tornado.ioloop <http://www.tornadoweb.org/en/stable/ioloop.html>`_,
which serve for `logging.handlers.SocketHandler <https://docs.python.org/2/library/logging.handlers.html?highlight=sockethandler#sockethandler>`_.

More information, see `logging-cookbook <https://docs.python.org/3/howto/logging-cookbook.html>`_.

Usage
======

1. Install
----------

Install `LoggerServer` by `pip`

.. code-block:: shell

pip install logger_server


2. Configuration
----------------

After `logger_server` package installed, you will got a command `logger-server`

`logger-server` options::

$ logger_server -h
usage: logger-server [-h] [-f CONF] [-p PORT] [--log LOG] [--when WHEN]
[--interval INTERVAL] [--backup BACKUP] [--fmt FMT]
[--datefmt DATEFMT]

LoggerServer help documentation

optional arguments:
-h, --help show this help message and exit
-f CONF, --conf CONF The config file path for LoggerServer. (default: None)
-p PORT, --port PORT LoggerServer port. (default: 9000)
--log LOG The log output file. (default: ./logserver.log)
--when WHEN specify the type of TimedRotatingFileHandler
interval.other options:('S', 'M', 'H', 'D', 'W0'-'W6')
(default: midnight)
--interval INTERVAL The interval value of timed rotating. (default: 1)
--backup BACKUP Number of log files to keep. (default: 14)
--fmt FMT The log output formatter of logging. (default:
[%(levelname)1.1s %(asctime)s %(ip)s %(name)s
%(module)s:%(lineno)d] %(message)s)
--datefmt DATEFMT The log output date formatter of logging. (default:
%Y-%m-%d %H:%M:%S.%f)

You can use param `-f` to specify a config file for `logger-server`.
`logserver.conf.template <https://github.com/kehr/LoggerServer/blob/master/logger_server/conf/logserver.conf.template>`_ is a configuration template.

.. warning::

By default, the config file setttings over command settings.

**Start LoggerServer** ::

$ logger_server

Output::

> LoggerServer is binding on 0.0.0.0:9000

3. Hello word
-------------------------

After start `logger-server`, now you can write your logging code, like below:

**Example1** use root logger::

import logging
import logging.handlers

# root logger setting
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
# change localhost to your `logger-server` ip
socketHandler = logging.handlers.SocketHandler('localhost', 9000)
logger.addHandler(socketHandler)

# use root logger
logging.debug('The root logger is working!')
logging.info('The root logger is working!')
logging.warn('The root logger is working!')
logging.error('The root logger is working!')
logging.critical('The root logger is working!')

# unsetted logger inherit the settings of root logger by default.
logger = logging.getLogger('default_logger')
logger.debug('The default logger is working!')
logger.info('The default logger is working!')
logger.warn('The default logger is working!')
logger.error('The default logger is working!')
logger.critical('The default logger is working!')

Output::

[D 2017-11-16 11:13:19.700965 127.0.0.1 root root_logger:23] The root logger is working!
[I 2017-11-16 11:13:19.702461 127.0.0.1 root root_logger:24] The root logger is working!
[W 2017-11-16 11:13:19.702587 127.0.0.1 root root_logger:25] The root logger is working!
[E 2017-11-16 11:13:19.702661 127.0.0.1 root root_logger:26] The root logger is working!
[C 2017-11-16 11:13:19.702759 127.0.0.1 root root_logger:27] The root logger is working!
[D 2017-11-16 11:13:19.702844 127.0.0.1 default_logger root_logger:31] The default logger is working!
[I 2017-11-16 11:13:19.702919 127.0.0.1 default_logger root_logger:32] The default logger is working!
[W 2017-11-16 11:13:19.702979 127.0.0.1 default_logger root_logger:33] The default logger is working!
[E 2017-11-16 11:13:19.703068 127.0.0.1 default_logger root_logger:34] The default logger is working!
[C 2017-11-16 11:13:19.703124 127.0.0.1 default_logger root_logger:35] The default logger is working!

Get this example code `root_logger.py <https://github.com/kehr/LoggerServer/blob/master/example/root_logger.py>`_.

**Example2** use custom logger::

import logging
import logging.handlers

# logger setting
logger = logging.getLogger('test')
logger.setLevel(logging.DEBUG)
# change localhost to your `logger-server` ip
socketHandler = logging.handlers.SocketHandler('localhost', 9000)
logger.addHandler(socketHandler)

logger.debug('The test logger is working!')
logger.info('The test logger is working!')
logger.warn('The test logger is working!')
logger.error('The test logger is working!')
logger.critical('The test logger is working!')

Output::

[D 2017-11-16 11:19:48.623884 127.0.0.1 test custom_logger:22] The test logger is working!
[I 2017-11-16 11:19:48.625533 127.0.0.1 test custom_logger:23] The test logger is working!
[W 2017-11-16 11:19:48.625658 127.0.0.1 test custom_logger:24] The test logger is working!
[E 2017-11-16 11:19:48.625739 127.0.0.1 test custom_logger:25] The test logger is working!
[C 2017-11-16 11:19:48.625821 127.0.0.1 test custom_logger:26] The test logger is working!

Get this example code `custom_logger.py <https://github.com/kehr/LoggerServer/blob/master/example/custom_logger.py>`_.

Module
======

.. toctree::
:maxdepth: 2

logger_server.server


Release history
===============

Version 1.0.0, Nov 15 2017
--------------------------
* Release v1.0.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

logger_server-1.0.0.tar.gz (12.1 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page