예제 #1
0
def init_profile_logger():
    """
    Sets up the profiling logger, if it hasn't already been set up.
    """
    global _profile_log

    enabled = getattr(settings, 'LOGGING_ENABLED', False)
    log_directory = getattr(settings, 'LOGGING_DIRECTORY', None)
    log_name = getattr(settings, 'LOGGING_NAME', None)

    if (enabled and log_directory and log_name and not _profile_log
            and getattr(settings, "LOGGING_ALLOW_PROFILING", False)):

        filename = os.path.join(log_directory, log_name + ".prof")

        if sys.platform == 'win32':
            handler = logging.FileHandler(filename)
        else:
            handler = WatchedFileHandler(filename)

        handler.setLevel(logging.INFO)
        handler.setFormatter(logging.Formatter("%(asctime)s %(message)s"))

        _profile_log = logging.getLogger("profile")
        _profile_log.addHandler(handler)
예제 #2
0
def init_logging():
    """
    Sets up the main loggers, if they haven't already been set up.
    """
    global _logging_setup

    if _logging_setup:
        return

    enabled = getattr(settings, 'LOGGING_ENABLED', False)
    log_directory = getattr(settings, 'LOGGING_DIRECTORY', None)
    log_name = getattr(settings, 'LOGGING_NAME', None)

    if not enabled or not log_directory or not log_name:
        return

    log_level_name = getattr(settings, 'LOGGING_LEVEL', DEFAULT_LOG_LEVEL)
    log_level = logging.getLevelName(log_level_name)
    request_format_str = getattr(settings, 'LOGGING_REQUEST_FORMAT',
                                 DEFAULT_REQUEST_FORMAT)
    format_str = getattr(settings, 'LOGGING_LINE_FORMAT', DEFAULT_LINE_FORMAT)

    log_path = os.path.join(log_directory, log_name + ".log")

    formatter = RequestLogFormatter(request_format_str, format_str)

    try:
        if sys.platform == 'win32':
            handler = logging.FileHandler(log_path)
        else:
            handler = WatchedFileHandler(log_path)

        handler.setLevel(log_level)
        handler.setFormatter(formatter)

        root.addHandler(handler)
        root.setLevel(log_level)
    except IOError:
        logging.basicConfig(
            level=log_level,
            format=format_str,
        )
        logging.warning("Could not open logfile %s. Logging to stderr",
                        log_path)

    if settings.DEBUG:
        # In DEBUG mode, log to the console as well.
        console_log = logging.StreamHandler()
        console_log.setLevel(log_level)
        console_log.setFormatter(formatter)
        root.addHandler(console_log)

        logging.debug("Logging to %s with a minimum level of %s", log_path,
                      log_level_name)

    _logging_setup = True
예제 #3
0
def paste_text():
    p = subprocess.Popen(["xsel", "-b", "-o"],
                         stdout=subprocess.PIPE,
                         close_fds=True)
    stdout, stderr = p.communicate()
    return stdout.decode("utf-8")


app = Flask("httpclip")
if os.environ.get("HTTPCLIP_SETTINGS"):
    app.config.from_envvar("HTTPCLIP_SETTINGS")
if app.config.get("HTTPCLIP_LOGFILE", None):
    from logging import WatchedFileHandler
    app.logger.addHandler(
        WatchedFileHandler(app.config.get("HTTPCLIP_LOGFILE"),
                           encoding="utf-8"))
verbose_logging = app.config.get("HTTPCLIP_VERBOSELOGGING", False)


@app.route("/", methods=("GET", ))
def index():
    response = make_response(render_template("index.html"), 200)
    response.headers["Content-type"] = "text/html"
    return response


@app.route("/clipboard/get", methods=("GET", ))
def clipboard_get():
    text = paste_text()
    if verbose_logging:
        log_text = text