Skip to content

Commit c8f8039

Browse files
committed
Change logging
1 parent e87ca0e commit c8f8039

File tree

11 files changed

+86
-67
lines changed

11 files changed

+86
-67
lines changed

bot.py

Lines changed: 9 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -34,33 +34,12 @@
3434
from core.clients import ApiClient, PluginDatabaseClient
3535
from core.config import ConfigManager
3636
from core.utils import human_join, parse_alias
37-
from core.models import PermissionLevel, ModmailLogger, SafeFormatter
37+
from core.models import PermissionLevel, SafeFormatter, getLogger, configure_logging
3838
from core.thread import ThreadManager
3939
from core.time import human_timedelta
4040

4141

42-
logger: ModmailLogger = logging.getLogger("Modmail")
43-
logger.__class__ = ModmailLogger
44-
45-
logger.setLevel(logging.INFO)
46-
47-
ch = logging.StreamHandler(stream=sys.stdout)
48-
ch.setLevel(logging.INFO)
49-
formatter = logging.Formatter(
50-
"%(asctime)s %(filename)s[%(lineno)d] - %(levelname)s: %(message)s",
51-
datefmt="%b %d %H:%M:%S",
52-
)
53-
ch.setFormatter(formatter)
54-
logger.addHandler(ch)
55-
56-
57-
class FileFormatter(logging.Formatter):
58-
ansi_escape = re.compile(r"\x1B\[[0-?]*[ -/]*[@-~]")
59-
60-
def format(self, record):
61-
record.msg = self.ansi_escape.sub("", record.msg)
62-
return super().format(record)
63-
42+
logger = getLogger(__name__)
6443

6544
temp_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "temp")
6645
if not os.path.exists(temp_dir):
@@ -125,7 +104,7 @@ def startup(self):
125104
logger.info("┴ ┴└─┘─┴┘┴ ┴┴ ┴┴┴─┘")
126105
logger.info("v%s", __version__)
127106
logger.info("Authors: kyb3r, fourjr, Taaku18")
128-
logger.line("debug")
107+
logger.line()
129108

130109
for cog in self.loaded_cogs:
131110
logger.debug("Loading %s.", cog)
@@ -145,30 +124,18 @@ def _configure_logging(self):
145124
"INFO": logging.INFO,
146125
"DEBUG": logging.DEBUG,
147126
}
148-
149-
ch_debug = logging.FileHandler(self.log_file_name, mode="a+")
150-
151-
ch_debug.setLevel(logging.DEBUG)
152-
formatter_debug = FileFormatter(
153-
"%(asctime)s %(filename)s[%(lineno)d] - %(levelname)s: %(message)s",
154-
datefmt="%Y-%m-%d %H:%M:%S",
155-
)
156-
ch_debug.setFormatter(formatter_debug)
157-
logger.addHandler(ch_debug)
127+
logger.line()
158128

159129
log_level = logging_levels.get(level_text)
160130
if log_level is None:
161131
log_level = self.config.remove("log_level")
162-
163-
logger.line()
164-
if log_level is not None:
165-
logger.setLevel(log_level)
166-
ch.setLevel(log_level)
167-
logger.info("Logging level: %s", level_text)
132+
logger.warning("Invalid logging level set: %s.", level_text)
133+
logger.warning("Using default logging level: INFO.")
168134
else:
169-
logger.info("Invalid logging level set.")
170-
logger.warning("Using default logging level: %s.", level_text)
135+
logger.info("Logging level: %s", level_text)
136+
171137
logger.info("Log file: %s", self.log_file_name)
138+
configure_logging(self.log_file_name, log_level)
172139
logger.debug("Successfully configured logging.")
173140

174141
@property

cogs/modmail.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import asyncio
2-
import logging
32
from datetime import datetime
43
from itertools import zip_longest
54
from typing import Optional, Union
@@ -13,7 +12,7 @@
1312
from natural.date import duration
1413

1514
from core import checks
16-
from core.models import PermissionLevel
15+
from core.models import PermissionLevel, getLogger
1716
from core.paginator import EmbedPaginatorSession
1817
from core.time import UserFriendlyTime, human_timedelta
1918
from core.utils import (
@@ -24,7 +23,7 @@
2423
trigger_typing,
2524
)
2625

27-
logger = logging.getLogger("Modmail")
26+
logger = getLogger(__name__)
2827

2928

3029
class Modmail(commands.Cog):

cogs/plugins.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import asyncio
22
import io
33
import json
4-
import logging
54
import os
65
import shutil
76
import sys
@@ -20,11 +19,11 @@
2019
from pkg_resources import parse_version
2120

2221
from core import checks
23-
from core.models import PermissionLevel
22+
from core.models import PermissionLevel, getLogger
2423
from core.paginator import EmbedPaginatorSession
2524
from core.utils import truncate, trigger_typing
2625

27-
logger = logging.getLogger("Modmail")
26+
logger = getLogger(__name__)
2827

2928

3029
class InvalidPluginError(commands.BadArgument):

cogs/utility.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import asyncio
22
import inspect
3-
import logging
43
import os
54
import traceback
65
import random
@@ -24,11 +23,11 @@
2423

2524
from core import checks
2625
from core.changelog import Changelog
27-
from core.models import InvalidConfigError, PermissionLevel
26+
from core.models import InvalidConfigError, PermissionLevel, getLogger
2827
from core.paginator import EmbedPaginatorSession, MessagePaginatorSession
2928
from core import utils
3029

31-
logger = logging.getLogger("Modmail")
30+
logger = getLogger(__name__)
3231

3332

3433
class ModmailHelpCommand(commands.HelpCommand):
@@ -619,7 +618,7 @@ async def loop_presence(self):
619618
@loop_presence.before_loop
620619
async def before_loop_presence(self):
621620
await self.bot.wait_for_connected()
622-
logger.line("debug")
621+
logger.line()
623622
activity, status = await self.set_presence()
624623

625624
if activity is not None:

core/changelog.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import logging
21
import re
32
from typing import List
43

54
from discord import Embed
65

6+
from core.models import getLogger
77
from core.utils import truncate
88

9-
logger = logging.getLogger("Modmail")
9+
logger = getLogger(__name__)
1010

1111

1212
class Version:

core/checks.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
import logging
2-
31
from discord.ext import commands
42

5-
from core.models import PermissionLevel
3+
from core.models import PermissionLevel, getLogger
64

7-
logger = logging.getLogger("Modmail")
5+
logger = getLogger(__name__)
86

97

108
def has_permissions_predicate(

core/clients.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import logging
21
import secrets
32
from datetime import datetime
43
from json import JSONDecodeError
@@ -8,7 +7,9 @@
87

98
from aiohttp import ClientResponseError, ClientResponse
109

11-
logger = logging.getLogger("Modmail")
10+
from core.models import getLogger
11+
12+
logger = getLogger(__name__)
1213

1314

1415
class RequestClient:

core/config.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import asyncio
22
import json
3-
import logging
43
import os
54
import re
65
import typing
@@ -13,11 +12,11 @@
1312
from discord.ext.commands import BadArgument
1413

1514
from core._color_data import ALL_COLORS
16-
from core.models import InvalidConfigError, Default
15+
from core.models import InvalidConfigError, Default, getLogger
1716
from core.time import UserFriendlyTime
1817
from core.utils import strtobool
1918

20-
logger = logging.getLogger("Modmail")
19+
logger = getLogger(__name__)
2120
load_dotenv()
2221

2322

core/models.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import _string
22
import logging
3+
import re
4+
import sys
35
from enum import IntEnum
46
from string import Formatter
57

@@ -88,6 +90,60 @@ def line(self, level="info"):
8890
)
8991

9092

93+
logging.setLoggerClass(ModmailLogger)
94+
log_level = logging.INFO
95+
loggers = set()
96+
97+
ch = logging.StreamHandler(stream=sys.stdout)
98+
ch.setLevel(log_level)
99+
formatter = logging.Formatter(
100+
"%(asctime)s %(name)s[%(lineno)d] - %(levelname)s: %(message)s",
101+
datefmt="%m/%d/%y %H:%M:%S",
102+
)
103+
ch.setFormatter(formatter)
104+
105+
ch_debug = None
106+
107+
108+
def getLogger(name=None) -> ModmailLogger:
109+
logger = logging.getLogger(name)
110+
logger.setLevel(log_level)
111+
logger.addHandler(ch)
112+
if ch_debug is not None:
113+
logger.addHandler(ch_debug)
114+
loggers.add(logger)
115+
return logger
116+
117+
118+
class FileFormatter(logging.Formatter):
119+
ansi_escape = re.compile(r"\x1B\[[0-?]*[ -/]*[@-~]")
120+
121+
def format(self, record):
122+
record.msg = self.ansi_escape.sub("", record.msg)
123+
return super().format(record)
124+
125+
126+
def configure_logging(name, level=None):
127+
global ch_debug, log_level
128+
ch_debug = logging.FileHandler(name, mode="a+")
129+
130+
formatter_debug = FileFormatter(
131+
"%(asctime)s %(name)s[%(lineno)d] - %(levelname)s: %(message)s",
132+
datefmt="%Y-%m-%d %H:%M:%S",
133+
)
134+
ch_debug.setFormatter(formatter_debug)
135+
ch_debug.setLevel(logging.DEBUG)
136+
137+
if level is not None:
138+
log_level = level
139+
140+
ch.setLevel(log_level)
141+
142+
for logger in loggers:
143+
logger.setLevel(log_level)
144+
logger.addHandler(ch_debug)
145+
146+
91147
class _Default:
92148
pass
93149

core/thread.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import asyncio
2-
import logging
32
import re
43
import string
54
import typing
@@ -11,10 +10,11 @@
1110
import discord
1211
from discord.ext.commands import MissingRequiredArgument, CommandError
1312

13+
from core.models import getLogger
1414
from core.time import human_timedelta
1515
from core.utils import is_image_url, days, match_user_id, truncate
1616

17-
logger = logging.getLogger("Modmail")
17+
logger = getLogger(__name__)
1818

1919

2020
class Thread:

0 commit comments

Comments
 (0)