[tor-commits] [nyx/master] Move log_file_path() to util
atagar at torproject.org
atagar at torproject.org
Tue May 5 05:42:06 UTC 2015
commit 095dc9cceb57c5c7649b594023fdad6505a17ac0
Author: Damian Johnson <atagar at torproject.org>
Date: Mon Apr 27 09:29:36 2015 -0700
Move log_file_path() to util
Small function that's been just begging to go into the util for a while now.
---
nyx/log_panel.py | 29 ++++++++++-------------------
nyx/util/log.py | 18 ++++++++++++++++++
2 files changed, 28 insertions(+), 19 deletions(-)
diff --git a/nyx/log_panel.py b/nyx/log_panel.py
index 5016e09..f250084 100644
--- a/nyx/log_panel.py
+++ b/nyx/log_panel.py
@@ -21,7 +21,7 @@ import nyx.popups
from nyx import __version__
from nyx.util import join, panel, tor_controller, ui_tools
-from nyx.util.log import TOR_RUNLEVELS, LogGroup, LogEntry, read_tor_log, condense_runlevels, days_since
+from nyx.util.log import TOR_RUNLEVELS, LogGroup, LogEntry, read_tor_log, condense_runlevels, days_since, log_file_path
ENTRY_INDENT = 2 # spaces an entry's message is indented after the first line
@@ -48,7 +48,6 @@ CONFIG = conf.config_dict('nyx', {
'features.log.regex': [],
'cache.log_panel.size': 1000,
'msg.misc.event_types': '',
- 'tor.chroot': '',
'attr.log_color': {},
}, conf_handler)
@@ -71,14 +70,6 @@ NYX_LOGGER = log.LogBuffer(log.Runlevel.DEBUG, yield_records = True)
stem_logger.addHandler(NYX_LOGGER)
-def log_file_path():
- for log_entry in tor_controller().get_conf('Log', [], True):
- entry_comp = log_entry.split() # looking for an entry like: notice file /var/log/tor/notices.log
-
- if entry_comp[1] == 'file':
- return CONFIG['tor.chroot'] + entry_comp[2]
-
-
class LogPanel(panel.Panel, threading.Thread):
"""
Listens for and displays tor, nyx, and stem events. This can prepopulate
@@ -115,7 +106,7 @@ class LogPanel(panel.Panel, threading.Thread):
self.regex_filter = None # filter for presented log events (no filtering if None)
self.last_content_height = 0 # height of the rendered content when last drawn
- self.log_file = None # file log messages are saved to (skipped if None)
+ self._log_file = None # file log messages are saved to (skipped if None)
self.scroll = 0
self.set_pause_attr('_msg_log')
@@ -142,7 +133,7 @@ class LogPanel(panel.Panel, threading.Thread):
set_runlevels = list(set.intersection(set(self.logged_events), set(list(log.Runlevel))))
read_limit = CONFIG['features.log.prepopulateReadLimit']
- logging_location = log_file_path()
+ logging_location = log_file_path(tor_controller())
if logging_location:
try:
@@ -188,14 +179,14 @@ class LogPanel(panel.Panel, threading.Thread):
if not os.path.exists(base_dir):
os.makedirs(base_dir)
- self.log_file = open(log_path, 'a')
+ self._log_file = open(log_path, 'a')
log.notice('nyx %s opening log file (%s)' % (__version__, log_path))
except IOError as exc:
log.error('Unable to write to log file: %s' % exc.strerror)
- self.log_file = None
+ self._log_file = None
except OSError as exc:
log.error('Unable to write to log file: %s' % exc)
- self.log_file = None
+ self._log_file = None
def set_duplicate_visability(self, is_visible):
"""
@@ -747,13 +738,13 @@ class LogPanel(panel.Panel, threading.Thread):
# note event in the log file if we're saving them
- if self.log_file:
+ if self._log_file:
try:
- self.log_file.write(event.display_message + '\n')
- self.log_file.flush()
+ self._log_file.write(event.display_message + '\n')
+ self._log_file.flush()
except IOError as exc:
log.error('Unable to write to log file: %s' % exc.strerror)
- self.log_file = None
+ self._log_file = None
with self.vals_lock:
self._msg_log.add(event)
diff --git a/nyx/util/log.py b/nyx/util/log.py
index 9a40411..4df50c0 100644
--- a/nyx/util/log.py
+++ b/nyx/util/log.py
@@ -20,6 +20,7 @@ except ImportError:
TOR_RUNLEVELS = ['DEBUG', 'INFO', 'NOTICE', 'WARN', 'ERR']
TIMEZONE_OFFSET = time.altzone if time.localtime()[8] else time.timezone
+CONFIG = stem.util.conf.config_dict('nyx', {'tor.chroot': ''})
def days_since(timestamp):
@@ -34,6 +35,23 @@ def days_since(timestamp):
return int((timestamp - TIMEZONE_OFFSET) / 86400)
+def log_file_path(controller):
+ """
+ Provides the path where tor's log file resides, if one exists.
+
+ :params stem.control.Controller controller: tor controller connection
+
+ :returns: **str** with the absolute path of our log file, or **None** if one
+ doesn't exist
+ """
+
+ for log_entry in controller.get_conf('Log', [], True):
+ entry_comp = log_entry.split() # looking for an entry like: notice file /var/log/tor/notices.log
+
+ if entry_comp[1] == 'file':
+ return CONFIG['tor.chroot'] + entry_comp[2]
+
+
@lru_cache()
def condense_runlevels(*events):
"""
More information about the tor-commits
mailing list