Logging tweaks to handle console and file handlers.

This commit is contained in:
Samuel Clay 2010-08-16 12:52:39 -04:00
parent fcca02717f
commit 588207384c
11 changed files with 59 additions and 38 deletions

View file

@ -117,8 +117,7 @@ class UserSubscription(models.Model):
self.save() self.save()
if (self.unread_count_positive == 0 and if (self.unread_count_positive == 0 and
self.unread_count_neutral == 0 and self.unread_count_neutral == 0):
self.unread_count_negative == 0):
self.mark_feed_read() self.mark_feed_read()
cache.delete('usersub:%s' % self.user.id) cache.delete('usersub:%s' % self.user.id)

View file

@ -1,4 +1,3 @@
import logging
import datetime import datetime
import random import random
from django.shortcuts import render_to_response, get_object_or_404 from django.shortcuts import render_to_response, get_object_or_404
@ -25,6 +24,7 @@ except:
from utils import json, urlnorm from utils import json, urlnorm
from utils.user_functions import get_user, ajax_login_required from utils.user_functions import get_user, ajax_login_required
from utils.feed_functions import fetch_address_from_page, format_relative_date from utils.feed_functions import fetch_address_from_page, format_relative_date
from utils import log as logging
SINGLE_DAY = 60*60*24 SINGLE_DAY = 60*60*24
@ -281,11 +281,17 @@ def load_single_feed(request):
def load_feed_page(request): def load_feed_page(request):
feed = get_object_or_404(Feed, id=request.REQUEST.get('feed_id')) feed = get_object_or_404(Feed, id=request.REQUEST.get('feed_id'))
feed_page, created = FeedPage.objects.get_or_create(feed=feed) feed_page, created = FeedPage.objects.get_or_create(feed=feed)
data = None
if not created: if not created:
data = feed.feed_page.page_data data = feed.feed_page.page_data
if created or not data:
if created:
data = "Give it 5-10 minutes...<br /><br />Your feed will be here in under 5 minutes (on average).<br />Soon there will be a progress bar. Until then, take a deep breath." data = "Give it 5-10 minutes...<br /><br />Your feed will be here in under 5 minutes (on average).<br />Soon there will be a progress bar. Until then, take a deep breath."
if not data:
data = "There is something wrong with this feed. In the next week, there will be a way to correct this error."
return HttpResponse(data, mimetype='text/html') return HttpResponse(data, mimetype='text/html')

View file

@ -4,8 +4,8 @@ from apps.rss_feeds.models import Feed, Story
from django.core.cache import cache from django.core.cache import cache
from apps.reader.models import UserSubscription, UserStory from apps.reader.models import UserSubscription, UserStory
from optparse import OptionParser, make_option from optparse import OptionParser, make_option
from utils import log as logging
import os import os
import logging
import errno import errno
import re import re

View file

@ -6,7 +6,6 @@ from django.core.cache import cache
from apps.reader.models import UserSubscription, UserStory from apps.reader.models import UserSubscription, UserStory
from optparse import OptionParser, make_option from optparse import OptionParser, make_option
import os import os
import logging
import errno import errno
import re import re
import datetime import datetime

View file

@ -7,7 +7,6 @@ from apps.reader.models import UserSubscription, UserStory
from optparse import OptionParser, make_option from optparse import OptionParser, make_option
from utils.management_functions import daemonize from utils.management_functions import daemonize
import os import os
import logging
import errno import errno
class Command(BaseCommand): class Command(BaseCommand):

View file

@ -1,13 +1,10 @@
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
from django.core.handlers.wsgi import WSGIHandler from django.conf import settings
from apps.rss_feeds.models import Feed, Story from apps.rss_feeds.models import Feed
from optparse import OptionParser, make_option from optparse import make_option
from utils import feed_fetcher from utils import feed_fetcher
from utils.management_functions import daemonize from utils.management_functions import daemonize
import logging
import socket import socket
import os
import math
import datetime import datetime
@ -28,6 +25,8 @@ class Command(BaseCommand):
if options['daemonize']: if options['daemonize']:
daemonize() daemonize()
settings.LOG_TO_STREAM = True
socket.setdefaulttimeout(options['timeout']) socket.setdefaulttimeout(options['timeout'])
now = datetime.datetime.now() now = datetime.datetime.now()
feeds = Feed.objects.filter(next_scheduled_update__lte=now)#.order_by('?') feeds = Feed.objects.filter(next_scheduled_update__lte=now)#.order_by('?')
@ -48,8 +47,6 @@ class Command(BaseCommand):
i += 1 i += 1
disp.add_jobs(feeds_queue, i) disp.add_jobs(feeds_queue, i)
print "Running jobs..." print " ---> Fetching %s feeds..." % feeds.count()
disp.run_jobs() disp.run_jobs()
print "Polling..."
disp.poll() disp.poll()

View file

@ -5,7 +5,6 @@ from django.core.cache import cache
from apps.rss_feeds.models import Feed from apps.rss_feeds.models import Feed
from optparse import OptionParser, make_option from optparse import OptionParser, make_option
import os import os
import logging
import errno import errno
class Command(BaseCommand): class Command(BaseCommand):

View file

@ -188,7 +188,7 @@ NEWSBLUR.ReaderStatistics.prototype = {
legend: { show: false }, legend: { show: false },
grid: { hoverable: true, clickable: true }, grid: { hoverable: true, clickable: true },
yaxis: { tickDecimals: 0, min: 0 }, yaxis: { tickDecimals: 0, min: 0 },
xaxis: { mode: 'time' } xaxis: { mode: 'time', minTickSize: [1, 'month'], timeformat: '%b %y' }
}); });
}, },

View file

@ -1,6 +1,7 @@
import sys import sys
import logging import logging
import os import os
from utils import log
# =========================== # ===========================
# = Directory Declaractions = # = Directory Declaractions =
@ -156,23 +157,6 @@ DEBUG_TOOLBAR_PANELS = (
'debug_toolbar.panels.logger.LoggingPanel', 'debug_toolbar.panels.logger.LoggingPanel',
) )
# ===========
# = Logging =
# ===========
if len(logging._handlerList) < 1:
if PRODUCTION:
logging.basicConfig(level=logging.INFO,
format='%(asctime)-12s: %(message)s',
datefmt='%b %d %H:%M',
filename=LOG_FILE,
filemode='a')
else:
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)-12s: %(message)s',
datefmt='%b %d %H:%M',
handler=logging.StreamHandler)
# ========================== # ==========================
# = Miscellaneous Settings = # = Miscellaneous Settings =
# ========================== # ==========================
@ -186,6 +170,13 @@ APPEND_SLASH = True
SOUTH_TESTS_MIGRATE = False SOUTH_TESTS_MIGRATE = False
SESSION_ENGINE = "django.contrib.sessions.backends.cached_db" SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"
# ===========
# = Logging =
# ===========
LOG_LEVEL = logging.DEBUG
LOG_TO_STREAM = False
# =============== # ===============
# = Django Apps = # = Django Apps =
# =============== # ===============

View file

@ -12,9 +12,9 @@ from django.db.models import Q
from django.db import IntegrityError from django.db import IntegrityError
from utils.story_functions import pre_process_story from utils.story_functions import pre_process_story
from utils.feed_functions import fetch_address_from_page from utils.feed_functions import fetch_address_from_page
from utils import log as logging
import sys import sys
import time import time
import logging
import datetime import datetime
import traceback import traceback
import multiprocessing import multiprocessing
@ -94,7 +94,7 @@ class ProcessFeed:
ENTRY_SAME:0, ENTRY_SAME:0,
ENTRY_ERR:0} ENTRY_ERR:0}
logging.debug(u'[%d] Processing %s' % (self.feed.id, logging.debug(u' ---> [%d] Processing %s' % (self.feed.id,
self.feed.feed_title)) self.feed.feed_title))
if hasattr(self.fpf, 'status'): if hasattr(self.fpf, 'status'):
@ -262,7 +262,6 @@ class Dispatcher:
if ret_entries.get(ENTRY_NEW): if ret_entries.get(ENTRY_NEW):
user_subs = UserSubscription.objects.filter(feed=feed) user_subs = UserSubscription.objects.filter(feed=feed)
for sub in user_subs: for sub in user_subs:
logging.debug('Deleting user sub cache: %s' % sub.user_id)
cache.delete('usersub:%s' % sub.user_id) cache.delete('usersub:%s' % sub.user_id)
sub.calculate_feed_scores(silent=True) sub.calculate_feed_scores(silent=True)
if ret_entries.get(ENTRY_NEW) or ret_entries.get(ENTRY_UPDATED): if ret_entries.get(ENTRY_NEW) or ret_entries.get(ENTRY_UPDATED):

32
utils/log.py Normal file
View file

@ -0,0 +1,32 @@
import logging
from django.conf import settings
def getlogger():
root_logger = logging.getLogger('newsblur')
if len(root_logger.handlers) >= 1:
return root_logger
logger = logging.getLogger('newsblur')
if settings.LOG_TO_STREAM:
hdlr = logging.StreamHandler()
else:
hdlr = logging.FileHandler(settings.LOG_FILE)
formatter = logging.Formatter('[%(asctime)-12s] %(message)s','%b %d %H:%M')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(settings.LOG_LEVEL)
return logger
def debug(msg):
logger = getlogger()
logger.debug(msg)
def info(msg):
logger = getlogger()
logger.info(msg)
def error(msg):
logger = getlogger()
logger.error(msg)