diff --git a/project.clj b/project.clj index 256c7f1d805956ed93db7896a5f68582b08d6be6..69995857cf3c2f8aeae7c06c6989956d9ed1f22b 100644 --- a/project.clj +++ b/project.clj @@ -1,4 +1,4 @@ -(defproject python/lein-template "0.17.2" +(defproject python/lein-template "0.17.3" :description "lein template for a python project" :repositories [["snapshots" {:url "http://devserv.game.yy.com/nexus/content/repositories/snapshots" diff --git a/src/leiningen/new/python/Makefile b/src/leiningen/new/python/Makefile index 97e79295da911e5b1bc812b6b58122355afeb597..531d8be05d5e418fe7a94dfceb4411656ebc4f66 100644 --- a/src/leiningen/new/python/Makefile +++ b/src/leiningen/new/python/Makefile @@ -40,7 +40,7 @@ logdir: fi bootstrap: venv requirements bootstrap-dev: REQUIREMENTS += $(DEV_REQUIREMENTS) -bootstrap-dev: venv requirements logdir +bootstrap-dev: venv requirements install: bootstrap $(PYTHON) setup.py -q install uninstall: bootstrap diff --git a/src/leiningen/new/python/configlogger.py b/src/leiningen/new/python/configlogger.py index adfbd3bd0f3d22489198e0cc6c80235d86cc0610..8587bbc7c4dff51eb2fc96cf7ac4ed30d6f0559a 100644 --- a/src/leiningen/new/python/configlogger.py +++ b/src/leiningen/new/python/configlogger.py @@ -8,11 +8,47 @@ config logger from __future__ import (absolute_import, division, print_function, unicode_literals, with_statement) +import os.path import logging from logging.config import fileConfig from pkg_resources import resource_filename +def load_logger_config(): + """if /var/log/{{name}} exist, load default logger.conf. + + otherwise, try to create it directly. + if that fails, try to create it with sudo. + if that fails, use basic logger config. + + """ + logdir = "/var/log/{{name}}/" + if os.path.exists(logdir): + fileConfig(resource_filename("{{name}}", "logger.conf")) + return + + try: + os.makedirs(logdir) + fileConfig(resource_filename("{{name}}", "logger.conf")) + return + except OSError as _: + pass + + import subprocess + exit_code = subprocess.call(["sudo", "mkdir", "-p", logdir]) + if exit_code == 0: + fileConfig(resource_filename("{{name}}", "logger.conf")) + return + + TESTING = os.getenv("PYTEST") == "1" + level = logging.DEBUG if TESTING else logging.INFO + logging.basicConfig( + format='%(asctime)s [%(module)s] %(levelname)-8s %(message)s', + level=level) + logging.info("Create log dir %s failed. Using basic config, level=%s", + logdir, "DEBUG" if TESTING else "INFO") + + logging.captureWarnings(True) -fileConfig(resource_filename("{{name}}", "logger.conf")) +load_logger_config()