apache / apache/pulsar-client-cpp

[Bug] CPP/Python Logger cannot be changed between different clients. First one set stays for all Pulsar Clients

Open
#333 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
71
Forks
90
Avg merge
2h 33m
Merged PRs (30d)
3

Description

### Search before asking

- [X] I searched in the [issues](https://github.com/apache/pulsar-client-cpp/issues) and found nothing similar.

### Version

Pulsar 3.1.0
Pulsar-Client Python 3.3.0
OS : Ubuntu 20.04

### Minimal reproduce step

```python
import logging
import pulsar

if __name__ == '__main__':
logger_1 = logging.getLogger('pulsar_logger_1')
hdlr = logging.StreamHandler()
log_format = "pulsar_logger_1: [%(asctime)s] [%(levelname)s]: %(message)s"
logger_1.setLevel(logging.INFO)
formatter = logging.Formatter(fmt=log_format)
hdlr.setFormatter(formatter)
logger_1.addHandler(hdlr)
logger_1.propagate = False
client = pulsar.Client('pulsar://localhost:6650', logger=logger_1)
consumer = client.subscribe('my-topic', 'my-subscription')
consumer.close()
client.close()
logger_2 = logging.getLogger('pulsar_logger_2')
hdlr = logging.StreamHandler()
log_format = "pulsar_logger_2: [%(asctime)s] [%(levelname)s]: %(message)s"
logger_2.setLevel(logging.INFO)
formatter = logging.Formatter(fmt=log_format)
hdlr.setFormatter(formatter)
logger_2.addHandler(hdlr)
logger_2.propagate = False
client_2 = pulsar.Client('pulsar://localhost:6651', logger=logger_2)
consumer_2 = client_2.subscribe('my-topic', 'my-subscription2')
consumer_2.close()
client_2.close()
client_3 = pulsar.Client('pulsar://localhost:6650', logger=None)
consumer_3 = client_3.subscribe('my-topic', 'my-subscription3')
consumer_3.close()
client_3.close()
```

### What did you expect to see?

I would expect the first client to use pulsar_logger_1, the second to use pulsar_logger_2 and the third one to use the default logger.

### What did you see instead?

All clients use pulsar_logger_1

### Anything else?

It seems that subsequent defined pulsar clients fail to set the logger and keep the first one defined instead.

### Are you willing to submit a PR?

- [ ] I'm willing to submit a PR!

Contributor guide

Open the contributing guide

Research direction

Start by running the Python reproduction against the Pulsar C++ client and trace how the logger passed to each Pulsar Client is retained. Done means separate clients use their supplied loggers, while a client given logger=None uses the default logger, as shown by the reproduction output.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, python
Domain
api, backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.