Cleanup the logs stuff a bit.
This commit is contained in:
		
							parent
							
								
									b44a2916ba
								
							
						
					
					
						commit
						46d128c85a
					
				| @ -3,7 +3,8 @@ SUBDIRS = hardware model view intro | ||||
| bin_SCRIPTS = sugar-shell | ||||
| 
 | ||||
| sugardir = $(pkgdatadir)/shell | ||||
| sugar_PYTHON =				\
 | ||||
| sugar_PYTHON =			\
 | ||||
| 	logsmanager.py		\
 | ||||
| 	shellservice.py | ||||
| 
 | ||||
| confdir = $(pkgdatadir)/shell | ||||
|  | ||||
							
								
								
									
										54
									
								
								shell/logsmanager.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								shell/logsmanager.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,54 @@ | ||||
| # Copyright (C) 2007 Red Hat, Inc. | ||||
| # | ||||
| # This library is free software; you can redistribute it and/or | ||||
| # modify it under the terms of the GNU Lesser General Public | ||||
| # License as published by the Free Software Foundation; either | ||||
| # version 2 of the License, or (at your option) any later version. | ||||
| # | ||||
| # This library is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
| # Lesser General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU Lesser General Public | ||||
| # License along with this library; if not, write to the | ||||
| # Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||
| # Boston, MA 02111-1307, USA. | ||||
| 
 | ||||
| import os | ||||
| import time | ||||
| 
 | ||||
| from sugar import env | ||||
| 
 | ||||
| _MAX_BACKUP_DIRS = 3 | ||||
| 
 | ||||
| def setup(): | ||||
|     logs_dir = env.get_logs_path() | ||||
|     if not os.path.isdir(logs_dir): | ||||
|         os.makedirs(logs_dir) | ||||
| 
 | ||||
|     backup_logs = [] | ||||
|     backup_dirs = [] | ||||
|     for f in os.listdir(logs_dir): | ||||
|         path = os.path.join(logs_dir, f) | ||||
|         if os.path.isfile(path): | ||||
|             backup_logs.append(f) | ||||
|         elif os.path.isdir(path): | ||||
|             backup_dirs.append(path)     | ||||
| 
 | ||||
|     if len(backup_dirs) > _MAX_BACKUP_DIRS: | ||||
|         backup_dirs.sort() | ||||
|         root = backup_dirs[0] | ||||
|         for f in os.listdir(root): | ||||
|             os.remove(os.path.join(root, f)) | ||||
|         os.rmdir(root) | ||||
| 
 | ||||
|     if len(backup_logs) > 0: | ||||
|         name = str(int(time.time())) | ||||
|         backup_dir = os.path.join(logs_dir, name) | ||||
|         os.mkdir(backup_dir) | ||||
|         for log in backup_logs: | ||||
|             source_path = os.path.join(logs_dir, log) | ||||
|             dest_path = os.path.join(backup_dir, log) | ||||
|             os.rename(source_path, dest_path) | ||||
| 
 | ||||
| @ -19,6 +19,7 @@ import sys | ||||
| import os | ||||
| from ConfigParser import ConfigParser | ||||
| import gettext | ||||
| import signal | ||||
| 
 | ||||
| import pygtk | ||||
| pygtk.require('2.0') | ||||
| @ -37,6 +38,7 @@ from model.shellmodel import ShellModel | ||||
| from shellservice import ShellService | ||||
| from hardware import hardwaremanager | ||||
| from intro import intro | ||||
| import logsmanager | ||||
| 
 | ||||
| def _start_matchbox(): | ||||
|     cmd = ['matchbox-window-manager'] | ||||
| @ -94,7 +96,7 @@ def _shell_started_cb(): | ||||
| def main(): | ||||
|     gobject.idle_add(_shell_started_cb) | ||||
| 
 | ||||
|     logger.setup_logs_dir() | ||||
|     logsmanager.setup() | ||||
|     logger.start('shell') | ||||
| 
 | ||||
|     _save_session_info() | ||||
| @ -110,6 +112,9 @@ def main(): | ||||
|         win.show_all() | ||||
|         gtk.main() | ||||
| 
 | ||||
|     # FIXME avoid zombie activity processes | ||||
|     signal.signal(signal.SIGCHLD, signal.SIG_IGN) | ||||
| 
 | ||||
|     if os.environ.has_key("SUGAR_TP_DEBUG"): | ||||
|         # Allow the user time to start up telepathy connection managers | ||||
|         # using the Sugar DBus bus address | ||||
|  | ||||
| @ -18,7 +18,7 @@ | ||||
| 
 | ||||
| import logging | ||||
| import subprocess | ||||
| import signal | ||||
| import time | ||||
| 
 | ||||
| import dbus | ||||
| import gobject | ||||
| @ -28,13 +28,11 @@ from sugar.presence import presenceservice | ||||
| from sugar.activity.activityhandle import ActivityHandle | ||||
| from sugar.activity import registry | ||||
| from sugar.datastore import datastore | ||||
| from sugar import logger | ||||
| from sugar import util | ||||
| from sugar import env | ||||
| 
 | ||||
| import os | ||||
| 
 | ||||
| signal.signal(signal.SIGCHLD, signal.SIG_IGN) | ||||
| 
 | ||||
| # #3903 - this constant can be removed and assumed to be 1 when dbus-python | ||||
| # 0.82.3 is the only version used | ||||
| if dbus.version >= (0, 82, 3): | ||||
| @ -103,9 +101,9 @@ def get_command(activity, activity_id=None, object_id=None, uri=None): | ||||
|     return command | ||||
| 
 | ||||
| def open_log_file(activity, activity_id): | ||||
|     name = '%s-%s.log' % (activity.bundle_id, activity_id[:5]) | ||||
|     path = os.path.join(logger.get_logs_dir(), name) | ||||
|     return open(path, 'w') | ||||
|     timestamp = str(int(time.time())) | ||||
|     name = '%s-%s.log' % (activity.bundle_id, timestamp) | ||||
|     return open(env.get_logs_path(name), 'w') | ||||
| 
 | ||||
| class ActivityCreationHandler(gobject.GObject): | ||||
|     """Sugar-side activity creation interface | ||||
|  | ||||
| @ -64,6 +64,13 @@ def get_profile_path(path=None): | ||||
|     else: | ||||
|         return base | ||||
| 
 | ||||
| def get_logs_path(path=None): | ||||
|     base = get_profile_path('logs') | ||||
|     if path != None: | ||||
|         return os.path.join(base, path) | ||||
|     else: | ||||
|         return base | ||||
| 
 | ||||
| def get_user_activities_path(): | ||||
|     return os.path.expanduser('~/Activities') | ||||
| 
 | ||||
|  | ||||
| @ -67,7 +67,7 @@ def set_level(level): | ||||
|     if levels.has_key(level): | ||||
|         logging.getLogger('').setLevel(levels[level]) | ||||
| 
 | ||||
| def start(log_filename=None, redirect_io=True): | ||||
| def start(log_filename=None, redirect_io=False): | ||||
|     if os.environ.has_key('SUGAR_LOGGER_LEVEL'): | ||||
|         set_level(os.environ['SUGAR_LOGGER_LEVEL']) | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Marco Pesenti Gritti
						Marco Pesenti Gritti