Home | History | Annotate | Download | only in server2
      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()
     27