Proxy Community
How to properly configure Python logging using dictConfig with JSON? or Best practices for setting up - Printable Version

+- Proxy Community (https://proxycommunity.com/forum)
+-- Forum: Technical Community Support (https://proxycommunity.com/forum/forum-technical-community-support)
+--- Forum: API and Development (https://proxycommunity.com/forum/forum-api-and-development)
+--- Thread: How to properly configure Python logging using dictConfig with JSON? or Best practices for setting up (/thread-how-to-properly-configure-python-logging-using-dictconfig-with-json-or-best-practices-for-setting-up)

Pages: 1 2


How to properly configure Python logging using dictConfig with JSON? or Best practices for setting up - secureTor77 - 18-11-2024

"Struggling with Python logging dictConfig JSON setup—any tips?"

Hey folks!

Trying to set up python logging dictconfig json for my project, but it’s giving me a headache.

I’ve got my JSON config file, but the logs aren’t showing up where I want ’em.

Anyone got a *working* example or some best practices?

Like, how do you handle handlers, formatters, and all that jazz without pulling your hair out?

Also, is there a way to make it less... verbose? Feels like I’m writing a novel just to log a simple message.

Thanks in advance!

(PS: If you’ve got a snippet, pls share. I’m lazy like that 😅)


“” - vpnTrekkerX - 06-02-2025

Hey! I feel your pain—python logging dictconfig json can be a beast.

Here’s a quick snippet that might help:

```python
import logging.config
import json

with open('logging_config.json') as f:
config = json.load(f)
logging.config.dictConfig(config)
```

Make sure your JSON has at least a "handlers" and "formatters" section.

For less verbosity, try setting `"level": "INFO"` instead of DEBUG.

Also, check out the official Python docs—they’ve got solid examples.


“” - secureDash99 - 16-02-2025

Ugh, I *hated* this too until I found a template. Here’s a barebones JSON config that works for me:

```json
{
"version": 1,
"formatters": {
"simple": {
"format": "%(levelname)s: %(message)s"
}
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"formatter": "simple"
}
},
"root": {
"handlers": ["console"],
"level": "INFO"
}
}
```

Save it as `log_config.json` and load it like the other reply said.

Pro tip: Use `"level": "WARNING"` if you *really* wanna cut the noise.


“” - maskingStorm99 - 09-03-2025

Dude, python logging dictconfig json is *so* much cleaner than the old .ini files, but yeah, it’s easy to overcomplicate.

For handlers, just stick to one or two—like a console handler and a file handler. No need to go wild.

Also, `"disable_existing_loggers": False` is a lifesaver if you’re using third-party libs that log stuff.

If you’re lazy (like me), just copy-paste from this guide: [Real Python’s Logging Guide](https://realpython.com/python-logging/).


“” - CipherGlide77 - 13-03-2025

Not gonna lie, I gave up and used `structlog` instead.

But if you’re set on python logging dictconfig json, here’s what tripped me up:

- Make sure your JSON is *valid*. Like, no trailing commas—Python’s JSON parser hates those.
- Double-check your handler *class* paths. `"class": "logging.FileHandler"` vs `"class": "logging.StreamHandler"` matters.

Also, `logging_tree` is a cool tool to debug your setup. Just `pip install logging_tree` and run it to see what’s *actually* happening.


“” - CloakSurfer - 21-03-2025

Yo, here’s a lazy trick:

1. Set up a basic config in code first (just to test).
2. Once it works, *convert* it to JSON using `json.dumps()`.

Like:

```python
import logging.config
import json

config = {
"version": 1,
"handlers": {
"console": {
"class": "logging.StreamHandler",
"level": "DEBUG"
}
}
}

print(json.dumps(config, indent=4))
```

Now you’ve got a JSON template to tweak.

Also, +1 for `logging_tree`—it’s clutch for debugging.


“” - secureTor77 - 24-03-2025

Wow, thanks for all the replies!

Tried the JSON snippet with the console handler, and it *finally* works. Still gotta tweak the formatters, but this is way better.

Quick Q: How do you handle *multiple* loggers with different levels in the same config? Like, I want DEBUG for my app but WARNING for `requests`.

Also, `logging_tree` looks dope—def gonna try that next.

(And yeah, `loguru` keeps popping up... might cave soon 😆)


“” - secureDash99 - 24-03-2025

If you’re drowning in config, try `loguru`. It’s like logging but without the headache.

But if you *must* use python logging dictconfig json, here’s a minimal file handler setup:

```json
{
"version": 1,
"handlers": {
"file": {
"class": "logging.FileHandler",
"filename": "app.log",
"formatter": "basic"
}
},
"formatters": {
"basic": {
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
}
},
"root": {
"handlers": ["file"],
"level": "INFO"
}
}
```

Save it, load it, and you’re golden.