# -*- coding: utf-8 -*-
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Logging via CherryPy."""

from __future__ import print_function

import re

import cherrypy  # pylint: disable=import-error


class Loggable(object):
  """Provides a log method, with automatic log tag generation."""
  _CAMELCASE_RE = re.compile('(?<=.)([A-Z])')

  def _Log(self, message, *args):
    return LogWithTag(
        self._CAMELCASE_RE.sub(r'_\1', self.__class__.__name__).upper(),
        message, *args)


def LogWithTag(tag, message, *args):
  # CherryPy log doesn't seem to take any optional args, so we just handle
  # args by formatting them into message.
  return cherrypy.log(message % args, context=tag)
