Skip to content

Commit c653d02

Browse files
2 parents 928b6b8 + e5dd432 commit c653d02

4 files changed

Lines changed: 42 additions & 0 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,3 +217,6 @@ __marimo__/
217217

218218
# MacOS
219219
.DS_Store
220+
221+
# CAPY
222+
logs/

capy_discord/__main__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
import capy_discord
44
from capy_discord.bot import Bot
55
from capy_discord.config import settings
6+
from capy_discord.logging import setup_logging
67

78

89
def main() -> None:
910
"""Main function to run the application."""
11+
setup_logging()
1012
capy_discord.instance = Bot(command_prefix=settings.prefix, intents=discord.Intents.all())
1113
capy_discord.instance.run(settings.token)
1214

capy_discord/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ class EnvConfig(BaseSettings):
1515
class Settings(EnvConfig):
1616
"""Manages application settings using Pydantic."""
1717

18+
log_level: str = "INFO"
1819
prefix: str = "/"
1920
token: str = ""
2021

capy_discord/logging.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import datetime
2+
import logging
3+
import logging.handlers
4+
from pathlib import Path
5+
6+
from capy_discord.config import settings
7+
8+
9+
def setup_logging() -> None:
10+
"""Set up logging for the application."""
11+
log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
12+
log_level = logging.getLevelNamesMapping()[settings.log_level.upper()]
13+
log_file = f"{datetime.datetime.now(datetime.UTC).date()}.log"
14+
15+
# Create logs directory if it doesn't exist
16+
log_dir = Path("logs")
17+
log_dir.mkdir(exist_ok=True)
18+
19+
# Root logger
20+
logger = logging.getLogger()
21+
logger.setLevel(log_level)
22+
23+
# File handler
24+
file_handler = logging.handlers.RotatingFileHandler(
25+
log_dir / log_file,
26+
maxBytes=1024 * 1024 * 5, # 5 MB
27+
backupCount=5,
28+
encoding="utf-8",
29+
)
30+
file_handler.setFormatter(logging.Formatter(log_format))
31+
logger.addHandler(file_handler)
32+
33+
# Console handler
34+
console_handler = logging.StreamHandler()
35+
console_handler.setFormatter(logging.Formatter(log_format))
36+
logger.addHandler(console_handler)

0 commit comments

Comments
 (0)