[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