mirror of
https://github.com/viq/NewsBlur.git
synced 2025-08-05 16:49:45 +00:00
Logging tweaks to handle console and file handlers.
This commit is contained in:
parent
fcca02717f
commit
588207384c
11 changed files with 59 additions and 38 deletions
|
@ -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)
|
||||||
|
|
|
@ -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')
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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):
|
||||||
|
|
|
@ -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()
|
|
@ -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):
|
||||||
|
|
|
@ -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' }
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
25
settings.py
25
settings.py
|
@ -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 =
|
||||||
# ===============
|
# ===============
|
||||||
|
|
|
@ -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
32
utils/log.py
Normal 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)
|
Loading…
Add table
Reference in a new issue