Skip to content

Commit 6f46bc5

Browse files
authored
Merge branch 'master' into python-nested-loops-materials
2 parents 7c539d2 + 0bf2eeb commit 6f46bc5

37 files changed

+2792
-3
lines changed

loguru/README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# How to Use Loguru for Simpler Python Logging
2+
3+
This repository contains code related to the Real Python tutorial [How to Use Loguru for Simpler Python Logging](https://realpython.com/python-loguru/).
4+
5+
## Setup
6+
7+
You should first create and activate a virtual environment:
8+
9+
```sh
10+
$ python -m venv venv/
11+
$ source venv/bin/activate
12+
```
13+
14+
Install the pinned dependencies from `requirements.txt`:
15+
16+
```sh
17+
(venv) $ python -m pip install -r requirements.txt
18+
```
19+
20+
Then you can execute the provided Python scripts, for example:
21+
22+
```sh
23+
(venv) $ python basic_logging.py
24+
```

loguru/basic_logging.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from loguru import logger
2+
3+
logger.debug("Debug message")
4+
logger.info("Info message")
5+
logger.error("Error message")

loguru/catch_and_log_errors.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from loguru import logger
2+
3+
4+
@logger.catch
5+
def divide(a, b):
6+
return a / b
7+
8+
9+
divide(10, 0)

loguru/context_logging.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import sys
2+
3+
from loguru import logger
4+
5+
logger.remove()
6+
logger.add(sys.stderr, format="{time} | {level} | {message} | {extra}")
7+
8+
user_logger = logger.bind(user_id=123)
9+
user_logger.info("User logged in")
10+
user_logger.info("User started a session")
11+
12+
with logger.contextualize(request_id="abc789"):
13+
logger.info("Processing request")
14+
logger.info("Request completed")
15+
16+
logger.info("Request is processed, this will not show extra context")

loguru/custom_json_logging.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import json
2+
3+
from loguru import logger
4+
5+
6+
def simple_serializer(record):
7+
subset = {
8+
"time": record["time"].timestamp(),
9+
"level": record["level"].name,
10+
"message": record["message"],
11+
"context": record["extra"], # Include any bound context
12+
}
13+
return json.dumps(subset)
14+
15+
16+
def add_serialization(record):
17+
record["extra"]["json_output"] = simple_serializer(record)
18+
19+
20+
logger.remove()
21+
logger = logger.patch(add_serialization)
22+
logger.add("custom.json", format="{extra[json_output]}")
23+
logger.bind(user="john").info("User logged in")
24+
logger.bind(order_id=12345).info("Order processed")

loguru/customized_log_errors.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from loguru import logger
2+
3+
4+
@logger.catch(message="Database connection failed", level="ERROR")
5+
def connect_to_db(host, port):
6+
if port < 1000:
7+
raise ValueError("Invalid port number")
8+
# Simulated database connection
9+
return 1 / 0 # Simulate error
10+
11+
12+
connect_to_db("localhost", 123)

loguru/debug_with_context.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import sys
2+
3+
from loguru import logger
4+
5+
logger.remove()
6+
logger.add(
7+
sys.stderr, format="{time} | {level} | {message} | {extra}", level="TRACE"
8+
)
9+
10+
11+
@logger.catch
12+
def perform_action(user, action):
13+
with logger.contextualize(user=user, action=action):
14+
logger.trace("Starting action")
15+
logger.info("Performing action")
16+
if action not in ["login", "logout"]:
17+
logger.trace("Invalid action detected")
18+
raise ValueError("Invalid action")
19+
logger.success("Action completed")
20+
21+
22+
perform_action("alice", "delete")

loguru/file_logging.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import time
2+
3+
from loguru import logger
4+
5+
logger.add(sink="app.log", rotation="5 seconds", retention="1 minute")
6+
for i in range(100):
7+
logger.info(f"Processing item #{i}")
8+
time.sleep(2)

loguru/loguru_json_file.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from loguru import logger
2+
3+
logger.remove()
4+
logger.add("app.json", serialize=True, format="{time} | {level} | {message}")
5+
logger.info("Application started")
6+
logger.warning("Memory usage high")

loguru/loguru_json_format.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import sys
2+
3+
from loguru import logger
4+
5+
logger.remove()
6+
logger.add(sys.stderr, serialize=True)
7+
logger.info("User logged in", user_id=123)

0 commit comments

Comments
 (0)