跳转到主要内容

微日志库

项目描述

ulogger

Build Status Test Coverage

一个微Python日志库。

支持的处理程序

需求

  • 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
```

行为准则

此项目遵守开放行为准则。通过参与,您应遵守此准则。

支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页