summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoretobi <git@e-tobi.net>2011-10-05 02:00:13 +0200
committeretobi <git@e-tobi.net>2011-10-09 19:15:53 +0200
commit0a40e921a330ca63e453089e56df392f4140a6c5 (patch)
treeb4806a65a3a6133188b557cc67d01be1720ac184
parentae92683571060609a34474586cbcbef9425d609d (diff)
downloadvdrnfofs-0a40e921a330ca63e453089e56df392f4140a6c5.tar.gz
vdrnfofs-0a40e921a330ca63e453089e56df392f4140a6c5.tar.bz2
Custom log filem, detailed exception logging
-rw-r--r--vdrnfofs/vdrnfofs.py29
1 files changed, 24 insertions, 5 deletions
diff --git a/vdrnfofs/vdrnfofs.py b/vdrnfofs/vdrnfofs.py
index 6e9cc8b..db3a247 100644
--- a/vdrnfofs/vdrnfofs.py
+++ b/vdrnfofs/vdrnfofs.py
@@ -33,7 +33,8 @@ import stat
import errno
import sys
import fuse
-import syslog
+import traceback
+import logging
from concatenated_file_reader import *
from vdr import *
@@ -41,6 +42,14 @@ from filesystemnodes import *
fuse.fuse_python_api = (0, 2)
+def format_exception_info(level = 6):
+ error_type, error_value, trbk = sys.exc_info()
+ tb_list = traceback.format_tb(trbk, level)
+ s = "Error: %s \nDescription: %s \nTraceback:" % (error_type.__name__, error_value)
+ for i in tb_list:
+ s += "\n" + i
+ return s
+
def get_node(video, path):
virtual_path, virtual_file_extension = os.path.splitext(path)
if virtual_file_extension in ['.mpg', '.nfo']:
@@ -69,7 +78,7 @@ class VdrNfoFsFile:
return -errno.ENOENT
return self.node.read(offset, size)
except:
- syslog.syslog('VdrFuseFs: Unexpected error for read(%s)' % self.path)
+ logging.error('VdrFuseFs: Unexpected error for read(%s): %s, %s' % (self.path, format_exception_info()))
def release(self, flags):
self.node.release()
@@ -96,7 +105,9 @@ class VdrNfoFsFile:
class VdrNfoFs(fuse.Fuse):
def __init__(self, *args, **kw):
fuse.Fuse.__init__(self, *args, **kw)
- self.video = ""
+ self.video = ''
+ self.log = ''
+ self.loglevel = 'info'
def getattr(self, path):
try:
@@ -105,7 +116,7 @@ class VdrNfoFs(fuse.Fuse):
return node.get_stat()
return -errno.ENOENT
except:
- syslog.syslog('VdrFuseFs: Unexpected error for getattr(%s)' % path)
+ logging.error('VdrFuseFs: Unexpected error for getattr(%s): %s' % (path, format_exception_info()))
def readdir(self, path, offset):
try:
@@ -116,9 +127,15 @@ class VdrNfoFs(fuse.Fuse):
for item in node.content():
yield fuse.Direntry(item.file_system_name)
except:
- syslog.syslog('VdrFuseFs: Unexpected error for readdir(%s)' % path)
+ logging.error('VdrFuseFs: Unexpected error for readdir(%s): %s' % (path, format_exception_info()))
def main(self, *a, **kw):
+ if self.log and self.log != None:
+ logging.basicConfig(filename=self.log, level=getattr(logging, self.loglevel.upper()))
+ else:
+ logging.basicConfig(level=self.loglevel.upper())
+ logging.info('Starting vdrnfofs')
+
VdrNfoFsFile.video_root = self.video
self.file_class = VdrNfoFsFile
return fuse.Fuse.main(self, *a, **kw)
@@ -131,6 +148,8 @@ def main():
fs = VdrNfoFs(version=version, usage=usage, dash_s_do='setsingle')
fs.parser.add_option(mountopt="video", default='', help="The video directory containing the VDR recordings")
+ fs.parser.add_option(mountopt="log", default='', help="The log file (default = console)")
+ fs.parser.add_option(mountopt="loglevel", default='info', help="The log level (debug, info, warning or error)")
fs.parse(values=fs, errex=1)
fs.main()