forked from influxdata/influxdb-client-python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlogging_handler.py
54 lines (43 loc) · 1.84 KB
/
logging_handler.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
"""
Show the usage of influx with python native logging.
This is useful if you
* want to log to influx and a local file.
* want to set up influx logging in a project without specifying it in submodules
"""
import datetime
import logging
import time
from influxdb_client import InfluxLoggingHandler, WritePrecision, Point
from influxdb_client.client.write_api import SYNCHRONOUS
DATA_LOGGER_NAME = '…'
def setup_logger():
"""
Set up data logger with the influx logging handler.
This can happen in your core module.
"""
influx_logging_handler = InfluxLoggingHandler(
url="http://localhost:8086", token="my-token", org="my-org", bucket="my-bucket",
client_args={'timeout': 30_000}, # optional configuration of the client
write_api_args={'write_options': SYNCHRONOUS}) # optional configuration of the write api
influx_logging_handler.setLevel(logging.DEBUG)
data_logger = logging.getLogger(DATA_LOGGER_NAME)
data_logger.setLevel(logging.DEBUG)
data_logger.addHandler(influx_logging_handler)
# feel free to add other handlers here.
# if you find yourself writing filters e.g. to only log points to influx, think about adding a PR :)
def use_logger():
"""Use the logger. This can happen in any submodule."""
# `data_logger` will have the influx_logging_handler attached if setup_logger was called somewhere.
data_logger = logging.getLogger(DATA_LOGGER_NAME)
# write a line yourself
data_logger.debug(f"my-measurement,host=host1 temperature=25.3 {int(time.time() * 1e9)}")
# or make use of the influxdb helpers like Point
data_logger.debug(
Point('my-measurement')
.tag('host', 'host1')
.field('temperature', 25.3)
.time(datetime.datetime.utcnow(), WritePrecision.MS)
)
if __name__ == "__main__":
setup_logger()
use_logger()