微日志库
项目描述
ulogger
一个微Python日志库。
支持的处理程序
- 流(stdout)
- syslog
- stackdriver (可选)
需求
- Python 3.7。在Python 3.8上测试也通过。由于grpcio模块的上级问题,已移除PyPy支持。
- 支持 Linux & OS X
使用方法
```sh
(env) $ pip install ulogger
# To use the stackdriver handler, you need to specify an extra dependency:
(env) $ pip install "ulogger[stackdriver]"
```
```python
import logging
from ulogger import setup_logging
# one handler
setup_logging('my_program', 'INFO', ['syslog'])
# multiple handlers
setup_logging('my_program', 'INFO', ['syslog', 'stream'])
# use a different logging facility for syslog (default 16/LOG_LOCAL0)
setup_logging('my_program', 'INFO', ['syslog'], facility=1)
setup_logging('my_program', 'INFO', ['syslog'], facility=logging.handlers.SysLogHandler.LOG_USER)
# then log messages normally
logging.info('ohai')
```
仅设置特定处理程序,例如 Syslog
```python
import logging
from ulogger import syslog
logger = logging.getLogger('my_logger')
handler = syslog.get_handler('my_program')
logger.addHandler(handler)
```
设置具有特定地址的 Syslog 处理程序
```python
import logging
from ulogger import syslog
logger = logging.getLogger('my_logger')
syslog_addr = ('10.99.0.1', 9514) # (host, port) tuple
# if just a host is given, the default port 514 is used
syslog_addr = ('localhost', None) # (host, port)
# filepath is supported
syslog_addr = '/dev/log'
handler = syslog.get_handler('my_program', address=syslog_addr)
# env vars are also supported, but will be overwritten if `address` is explicitly given
os.environ['SYSLOG_HOST'] = 'localhost'
os.environ['SYSLOG_PORT'] = 325
handler = syslog.get_handler('my_program')
# TCP & UDP are supported
proto = 1 # TCP
proto = socket.SOCK_STREAM # TCP
proto = 2 # UDP - default
proto = socket.SOCK_DGRAM # UDP - default
handler = syslog.get_handler('my_program', address=syslog_addr, proto=proto)
logger.addHandler(handler)
```
格式化
默认
所有处理程序的默认日期格式如下: '%Y-%m-%dT%H:%M:%S'
(示例 2017-11-02T09:51:33.792
)。
默认日志格式根据您选择的处理程序略有不同
流处理程序日志格式
```python
'%(asctime)s.%(msecs)03dZ <PROGNAME> (%(process)d) %(levelname)s: %(message)s'
```
示例
```text
2017-11-02T09:51:33.792Z my_awesome_program (63079) INFO: Beginning awesome program v3.
```
Linux 上的 Syslog 处理程序日志格式
```python
'%(asctime)s.%(msecs)03dZ <PROGNAME> (%(process)d): %(message)s'
```
示例
```text
2017-11-02T09:51:33.792Z my_awesome_program (63079): Beginning awesome program v3.
```
OS X 上的 Syslog 处理程序日志格式
```python
'<PROGNAME> (%(process)d): %(message)s'
```
示例
```text
Aug 25 13:00:51 my-host.example.net my_awesome_program (63079): Beginning awesome program v3.
```
注意:OS X上的默认syslog在日志记录中附加日期和主机名。
Stackdriver 处理程序日志格式
```python
'%(asctime)s.%(msecs)03d <HOST> <PROGNAME> (%(process)d): %(message)s'
```
示例
```text
2017-11-02T19:00:55.850 my-gcp-host my_awesome_program (63079): Beginning awesome program v3"
```
自定义
要添加您自定义的日志和/或日期格式化程序
```python
import logging
from ulogger import setup_logging
log_fmt = '%(created)f %(levelno)d %(message)s'
log_date_fmt = '%Y-%m-%dT%H:%M:%S'
setup_logging('my_program', 'INFO', ['syslog'], log_fmt, log_date_fmt)
```
开发
为了开发和运行测试,您的系统必须安装所有支持的Python版本。我们建议使用pyenv。
设置
```sh
$ git clone git@github.com:spotify/ulogger.git && cd ulogger
# make a virtualenv
(env) $ pip install -r dev-requirements.txt
```
运行测试
要运行整个测试套件
```sh
# outside of the virtualenv
# if tox is not yet installed
$ pip install tox
$ tox
```
如果您想运行特定版本的Python的测试套件
```sh
# outside of the virtualenv
$ tox -e py37
```
要运行单个测试,直接调用 pytest
```sh
# inside virtualenv
(env) $ pytest tests/test_syslog.py
```
行为准则
此项目遵守开放行为准则。通过参与,您应遵守此准则。
关闭
ulogger-3.0.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 7ef36641d429efb406afb3bdbfa9f75000d9ae87c2ede044ac6059f99fc512b6 |
|
MD5 | bd9a9804eebe14b901fe85058839f4de |
|
BLAKE2b-256 | c814f680f77d277050bc223d6a46b4f7d6a9d9ae5807f0d03ae8eb112a3df223 |