122
123
return callback, errback
123
124
# pylint: enable-msg=C0103
126
### configure the thing ###
127
125
LOGFILENAME = os.path.join(LOGFOLDER, 'syncdaemon.log')
128
126
EXLOGFILENAME = os.path.join(LOGFOLDER, 'syncdaemon-exceptions.log')
129
127
INVALIDLOGFILENAME = os.path.join(LOGFOLDER, 'syncdaemon-invalid-names.log')
130
128
BROKENLOGFILENAME = os.path.join(LOGFOLDER, 'syncdaemon-broken-nodes.log')
134
131
root_logger = logging.getLogger("ubuntuone.SyncDaemon")
135
root_logger.propagate = False
136
root_logger.setLevel(_DEBUG_LOG_LEVEL)
137
root_handler = CustomRotatingFileHandler(filename=LOGFILENAME)
138
root_handler.addFilter(MultiFilter(['ubuntuone.SyncDaemon',
139
'twisted', 'pyinotify']))
140
root_handler.setFormatter(basic_formatter)
141
root_handler.setLevel(_DEBUG_LOG_LEVEL)
142
root_logger.addHandler(root_handler)
144
exception_handler = CustomRotatingFileHandler(filename=EXLOGFILENAME)
145
exception_handler.setFormatter(basic_formatter)
146
exception_handler.setLevel(logging.ERROR)
147
# add the exception handler to the root logger
148
logging.getLogger('').addHandler(exception_handler)
149
root_logger.addHandler(exception_handler)
151
# hook twisted.python.log with standard logging
152
from twisted.python import log
153
observer = log.PythonLoggingObserver('twisted')
155
# configure the logger to only show errors
156
132
twisted_logger = logging.getLogger('twisted')
157
twisted_logger.propagate = False
158
twisted_logger.setLevel(logging.ERROR)
159
twisted_logger.addHandler(root_handler)
160
twisted_logger.addHandler(exception_handler)
163
# allow pyinotify to configure it's custom logger
165
# fallback to logging.getLogger(name) to support older versions of pyinotify
166
inotify_logger = getattr(pyinotify, 'log', logging.getLogger('pyinotify'))
134
filesystem_logger = get_filesystem_logger()
167
135
# now restore our custom logger class
168
136
logging.setLoggerClass(Logger)
169
# hook pyinotify logger, but remove the console handler first
170
for hdlr in inotify_logger.handlers:
171
if isinstance(hdlr, logging.StreamHandler):
172
inotify_logger.removeHandler(hdlr)
173
inotify_logger.addHandler(root_handler)
174
inotify_logger.setLevel(logging.ERROR)
175
inotify_logger.propagate = False
177
# invalid filenames log
178
invnames_logger = logging.getLogger("ubuntuone.SyncDaemon.InvalidNames")
179
invnames_logger.setLevel(_DEBUG_LOG_LEVEL)
180
invnames_handler = CustomRotatingFileHandler(filename=INVALIDLOGFILENAME)
181
invnames_handler.setFormatter(basic_formatter)
182
invnames_handler.setLevel(logging.INFO)
183
invnames_logger.addHandler(invnames_handler)
186
brokennodes_logger = logging.getLogger("ubuntuone.SyncDaemon.BrokenNodes")
187
brokennodes_logger.setLevel(_DEBUG_LOG_LEVEL)
188
brokennodes_handler = CustomRotatingFileHandler(filename=BROKENLOGFILENAME)
189
brokennodes_handler.setFormatter(basic_formatter)
190
brokennodes_handler.setLevel(logging.INFO)
191
brokennodes_logger.addHandler(brokennodes_handler)
138
root_handler = CustomRotatingFileHandler(filename=LOGFILENAME)
139
exception_handler = CustomRotatingFileHandler(filename=EXLOGFILENAME)
143
root_logger.propagate = False
144
root_logger.setLevel(_DEBUG_LOG_LEVEL)
145
root_handler.addFilter(MultiFilter(['ubuntuone.SyncDaemon',
146
'twisted', 'pyinotify']))
147
root_handler.setFormatter(basic_formatter)
148
root_handler.setLevel(_DEBUG_LOG_LEVEL)
149
root_logger.addHandler(root_handler)
151
exception_handler.setFormatter(basic_formatter)
152
exception_handler.setLevel(logging.ERROR)
153
# add the exception handler to the root logger
154
logging.getLogger('').addHandler(exception_handler)
155
root_logger.addHandler(exception_handler)
157
# hook twisted.python.log with standard logging
158
from twisted.python import log
159
observer = log.PythonLoggingObserver('twisted')
161
# configure the logger to only show errors
162
twisted_logger.propagate = False
163
twisted_logger.setLevel(logging.ERROR)
164
twisted_logger.addHandler(root_handler)
165
twisted_logger.addHandler(exception_handler)
167
# set the filesystem logging
168
setup_filesystem_logging(filesystem_logger, root_handler)
170
# invalid filenames log
171
invnames_logger = logging.getLogger("ubuntuone.SyncDaemon.InvalidNames")
172
invnames_logger.setLevel(_DEBUG_LOG_LEVEL)
173
invnames_handler = CustomRotatingFileHandler(filename=INVALIDLOGFILENAME)
174
invnames_handler.setFormatter(basic_formatter)
175
invnames_handler.setLevel(logging.INFO)
176
invnames_logger.addHandler(invnames_handler)
179
brokennodes_logger = logging.getLogger("ubuntuone.SyncDaemon.BrokenNodes")
180
brokennodes_logger.setLevel(_DEBUG_LOG_LEVEL)
181
brokennodes_handler = CustomRotatingFileHandler(filename=BROKENLOGFILENAME)
182
brokennodes_handler.setFormatter(basic_formatter)
183
brokennodes_handler.setLevel(logging.INFO)
184
brokennodes_logger.addHandler(brokennodes_handler)
194
187
def configure_logging(level, maxBytes, backupCount):