Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / docs / server2 / custom_logger.py
1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import logging
6
7 from appengine_wrappers import logservice
8
9
10 class CustomLogger(object):
11   '''Wraps logging methods to include a prefix and flush immediately.
12   The flushing is important because logging is often done from jobs
13   which may time out, thus losing unflushed logs.
14   '''
15   def __init__(self, prefix):
16     self._prefix = prefix
17
18   def info(self, msg, *args):    self._log(logging.info, msg, args)
19   def warning(self, msg, *args): self._log(logging.warning, msg, args)
20   def error(self, msg, *args):   self._log(logging.error, msg, args)
21
22   def _log(self, logfn, msg, args):
23     try:
24       logfn('%s: %s' % (self._prefix, msg), *args)
25     finally:
26       logservice.flush()