mirror of
https://github.com/zulip/zulip.git
synced 2025-10-24 00:23:49 +00:00
logging: Reduce create_logger to new log_to_file.
The name `create_logger` suggests something much bigger than what this function actually does -- the logger doesn't any more or less exist after the function is called than before. Its one real function is to send logs to a specific file. So, pull out that logic to an appropriately-named function just for it. We already use `logging.getLogger` in a number of places to simply get a logger by name, and the old `create_logger` callsites can do the same.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import time
|
||||
from collections import OrderedDict, defaultdict
|
||||
from datetime import datetime, timedelta
|
||||
import logging
|
||||
from typing import Any, Callable, Dict, List, \
|
||||
Optional, Text, Tuple, Type, Union
|
||||
|
||||
@@ -11,7 +12,7 @@ from django.db.models import F
|
||||
from analytics.models import Anomaly, BaseCount, \
|
||||
FillState, InstallationCount, RealmCount, StreamCount, \
|
||||
UserCount, installation_epoch, last_successful_fill
|
||||
from zerver.lib.logging_util import create_logger
|
||||
from zerver.lib.logging_util import log_to_file
|
||||
from zerver.lib.timestamp import ceiling_to_day, \
|
||||
ceiling_to_hour, floor_to_hour, verify_UTC
|
||||
from zerver.models import Message, Realm, RealmAuditLog, \
|
||||
@@ -19,7 +20,8 @@ from zerver.models import Message, Realm, RealmAuditLog, \
|
||||
|
||||
## Logging setup ##
|
||||
|
||||
logger = create_logger('zulip.management', settings.ANALYTICS_LOG_PATH)
|
||||
logger = logging.getLogger('zulip.management')
|
||||
log_to_file(logger, settings.ANALYTICS_LOG_PATH)
|
||||
|
||||
# You can't subtract timedelta.max from a datetime, so use this instead
|
||||
TIMEDELTA_MAX = timedelta(days=365*1000)
|
||||
|
||||
@@ -31,7 +31,7 @@ from io import BytesIO
|
||||
import urllib
|
||||
|
||||
from typing import Union, Any, Callable, Sequence, Dict, Optional, TypeVar, Text, Tuple, cast
|
||||
from zerver.lib.logging_util import create_logger
|
||||
from zerver.lib.logging_util import log_to_file
|
||||
|
||||
# This is a hack to ensure that RemoteZulipServer always exists even
|
||||
# if Zilencer isn't enabled.
|
||||
@@ -45,8 +45,8 @@ else:
|
||||
ViewFuncT = TypeVar('ViewFuncT', bound=Callable[..., HttpResponse])
|
||||
ReturnT = TypeVar('ReturnT')
|
||||
|
||||
## logger setup
|
||||
webhook_logger = create_logger("zulip.zerver.webhooks", settings.API_KEY_ONLY_WEBHOOK_LOG_PATH)
|
||||
webhook_logger = logging.getLogger("zulip.zerver.webhooks")
|
||||
log_to_file(webhook_logger, settings.API_KEY_ONLY_WEBHOOK_LOG_PATH)
|
||||
|
||||
class _RespondAsynchronously:
|
||||
pass
|
||||
|
||||
@@ -2,6 +2,7 @@ from typing import Any, Callable, Dict, Iterable, List, Set, Tuple, Text
|
||||
|
||||
from collections import defaultdict
|
||||
import datetime
|
||||
import logging
|
||||
import pytz
|
||||
|
||||
from django.db.models import Q, QuerySet
|
||||
@@ -17,9 +18,10 @@ from zerver.models import UserProfile, UserMessage, Recipient, Stream, \
|
||||
Realm
|
||||
from zerver.context_processors import common_context
|
||||
from zerver.lib.queue import queue_json_publish
|
||||
from zerver.lib.logging_util import create_logger
|
||||
from zerver.lib.logging_util import log_to_file
|
||||
|
||||
logger = create_logger(__name__, settings.DIGEST_LOG_PATH)
|
||||
logger = logging.getLogger(__name__)
|
||||
log_to_file(logger, settings.DIGEST_LOG_PATH)
|
||||
|
||||
VALID_DIGEST_DAY = 1 # Tuesdays
|
||||
DIGEST_CUTOFF = 5
|
||||
|
||||
@@ -185,24 +185,12 @@ class ZulipFormatter(logging.Formatter):
|
||||
setattr(record, 'zulip_decorated', True)
|
||||
return super().format(record)
|
||||
|
||||
def create_logger(name: str,
|
||||
log_file: str,
|
||||
log_format: str="%(asctime)s%(levelname)-8s%(message)s") -> Logger:
|
||||
"""Creates a named logger for use in logging content to a certain
|
||||
file. A few notes:
|
||||
|
||||
* "name" is used in determining what gets logged to which files;
|
||||
see "loggers" in zproject/settings.py for details. Don't use `""`
|
||||
-- that's the root logger.
|
||||
* "log_file" should be declared in zproject/settings.py in ZULIP_PATHS.
|
||||
|
||||
"""
|
||||
logger = logging.getLogger(name)
|
||||
|
||||
if log_file:
|
||||
formatter = logging.Formatter(log_format)
|
||||
file_handler = logging.FileHandler(log_file)
|
||||
file_handler.setFormatter(formatter)
|
||||
logger.addHandler(file_handler)
|
||||
|
||||
return logger
|
||||
def log_to_file(logger: Logger,
|
||||
filename: str,
|
||||
log_format: str="%(asctime)s%(levelname)-8s%(message)s",
|
||||
) -> None:
|
||||
"""Note: `filename` should be declared in zproject/settings.py in ZULIP_PATHS."""
|
||||
formatter = logging.Formatter(log_format)
|
||||
handler = logging.FileHandler(filename)
|
||||
handler.setFormatter(formatter)
|
||||
logger.addHandler(handler)
|
||||
|
||||
@@ -8,16 +8,18 @@ from zerver.models import UserProfile, ScheduledEmail, get_user_profile_by_id, \
|
||||
|
||||
import datetime
|
||||
from email.utils import parseaddr, formataddr
|
||||
import logging
|
||||
import ujson
|
||||
|
||||
import os
|
||||
from typing import Any, Dict, Iterable, List, Mapping, Optional, Text
|
||||
|
||||
from zerver.lib.logging_util import create_logger
|
||||
from zerver.lib.logging_util import log_to_file
|
||||
|
||||
## Logging setup ##
|
||||
|
||||
logger = create_logger('zulip.send_email', settings.EMAIL_LOG_PATH)
|
||||
logger = logging.getLogger('zulip.send_email')
|
||||
log_to_file(logger, settings.EMAIL_LOG_PATH)
|
||||
|
||||
class FromAddress:
|
||||
SUPPORT = parseaddr(settings.ZULIP_ADMINISTRATOR)[1]
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
|
||||
from zerver.lib.logging_util import create_logger
|
||||
from zerver.lib.logging_util import log_to_file
|
||||
from collections import defaultdict
|
||||
import logging
|
||||
from django.db import transaction
|
||||
from django.db.models import Max
|
||||
from django.conf import settings
|
||||
@@ -10,7 +11,8 @@ from typing import DefaultDict, List, Union, Any
|
||||
from zerver.models import UserProfile, UserMessage, RealmAuditLog, \
|
||||
Subscription, Message, Recipient, UserActivity, Realm
|
||||
|
||||
logger = create_logger("zulip.soft_deactivation", settings.SOFT_DEACTIVATION_LOG_PATH)
|
||||
logger = logging.getLogger("zulip.soft_deactivation")
|
||||
log_to_file(logger, settings.SOFT_DEACTIVATION_LOG_PATH)
|
||||
|
||||
def filter_by_subscription_history(user_profile: UserProfile,
|
||||
all_stream_messages: DefaultDict[int, List[Message]],
|
||||
|
||||
@@ -9,7 +9,7 @@ condition. (Alternatively, you can set `EMAIL_DELIVERER_DISABLED=True`
|
||||
on all but one machine to make the command have no effect.)
|
||||
"""
|
||||
|
||||
|
||||
import logging
|
||||
import time
|
||||
from typing import Any
|
||||
|
||||
@@ -19,12 +19,13 @@ from django.utils.timezone import now as timezone_now
|
||||
from ujson import loads
|
||||
|
||||
from zerver.lib.context_managers import lockfile
|
||||
from zerver.lib.logging_util import create_logger
|
||||
from zerver.lib.logging_util import log_to_file
|
||||
from zerver.lib.send_email import EmailNotDeliveredException, send_email
|
||||
from zerver.models import ScheduledEmail
|
||||
|
||||
## Setup ##
|
||||
logger = create_logger(__name__, settings.EMAIL_DELIVERER_LOG_PATH)
|
||||
logger = logging.getLogger(__name__)
|
||||
log_to_file(logger, settings.EMAIL_DELIVERER_LOG_PATH)
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = """Deliver emails queued by various parts of Zulip
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import datetime
|
||||
import logging
|
||||
from typing import Any, List
|
||||
|
||||
from django.conf import settings
|
||||
@@ -6,10 +7,11 @@ from django.core.management.base import BaseCommand
|
||||
from django.utils.timezone import now as timezone_now
|
||||
|
||||
from zerver.lib.digest import DIGEST_CUTOFF, enqueue_emails
|
||||
from zerver.lib.logging_util import create_logger
|
||||
from zerver.lib.logging_util import log_to_file
|
||||
|
||||
## Logging setup ##
|
||||
logger = create_logger(__name__, settings.DIGEST_LOG_PATH)
|
||||
logger = logging.getLogger(__name__)
|
||||
log_to_file(logger, settings.DIGEST_LOG_PATH)
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = """Enqueue digest emails for users that haven't checked the app
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.db.utils import IntegrityError
|
||||
|
||||
from zerver.lib.logging_util import create_logger
|
||||
from zerver.lib.logging_util import log_to_file
|
||||
from zerver.models import UserProfile
|
||||
from zproject.backends import ZulipLDAPUserPopulator
|
||||
|
||||
## Setup ##
|
||||
logger = create_logger(__name__, settings.LDAP_SYNC_LOG_PATH)
|
||||
logger = logging.getLogger(__name__)
|
||||
log_to_file(logger, settings.LDAP_SYNC_LOG_PATH)
|
||||
|
||||
# Run this on a cronjob to pick up on name changes.
|
||||
def sync_ldap_user_data() -> None:
|
||||
|
||||
Reference in New Issue
Block a user