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()
if (self.unread_count_positive == 0 and
self.unread_count_neutral == 0 and
self.unread_count_negative == 0):
self.unread_count_neutral == 0):
self.mark_feed_read()
cache.delete('usersub:%s' % self.user.id)

View file

@ -1,4 +1,3 @@
import logging
import datetime
import random
from django.shortcuts import render_to_response, get_object_or_404
@ -25,6 +24,7 @@ except:
from utils import json, urlnorm
from utils.user_functions import get_user, ajax_login_required
from utils.feed_functions import fetch_address_from_page, format_relative_date
from utils import log as logging
SINGLE_DAY = 60*60*24
@ -281,10 +281,16 @@ def load_single_feed(request):
def load_feed_page(request):
feed = get_object_or_404(Feed, id=request.REQUEST.get('feed_id'))
feed_page, created = FeedPage.objects.get_or_create(feed=feed)
data = None
if not created:
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."
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')

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -188,7 +188,7 @@ NEWSBLUR.ReaderStatistics.prototype = {
legend: { show: false },
grid: { hoverable: true, clickable: true },
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 logging
import os
from utils import log
# ===========================
# = Directory Declaractions =
@ -156,23 +157,6 @@ DEBUG_TOOLBAR_PANELS = (
'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 =
# ==========================
@ -186,6 +170,13 @@ APPEND_SLASH = True
SOUTH_TESTS_MIGRATE = False
SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"
# ===========
# = Logging =
# ===========
LOG_LEVEL = logging.DEBUG
LOG_TO_STREAM = False
# ===============
# = Django Apps =
# ===============

View file

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