diff options
16 files changed, 294 insertions, 37 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index 36b610e10..a4481edb3 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,6 +1,15 @@ Next release ============ +Features +-------- + +- Add logging configuration to all paster templates. + +- ``pyramid_alchemy``, ``pyramid_routesalchemy``, and ``pylons_sqla`` paster + templates now use idiomatic SQLAlchemy configuration in their respective + ``.ini`` files and Python code. + Bug Fixes --------- diff --git a/docs/narr/MyProject/development.ini b/docs/narr/MyProject/development.ini index 9c51cfe6e..80d89e46a 100644 --- a/docs/narr/MyProject/development.ini +++ b/docs/narr/MyProject/development.ini @@ -15,3 +15,29 @@ pipeline = use = egg:Paste#http host = 0.0.0.0 port = 6543 + +# Begin logging configuration + +[loggers] +keys = root + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = INFO +handlers = console + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s + +# End logging configuration diff --git a/pyramid/paster_templates/alchemy/+package+/__init__.py_tmpl b/pyramid/paster_templates/alchemy/+package+/__init__.py_tmpl index c20e7dd15..aabbce27b 100755 --- a/pyramid/paster_templates/alchemy/+package+/__init__.py_tmpl +++ b/pyramid/paster_templates/alchemy/+package+/__init__.py_tmpl @@ -1,16 +1,14 @@ from pyramid.configuration import Configurator from pyramid.settings import asbool +from sqlalchemy import engine_from_config from {{package}}.models import appmaker def main(global_config, **settings): """ This function returns a WSGI application. """ - db_string = settings.get('db_string') - if db_string is None: - raise ValueError("No 'db_string' value in application configuration.") - db_echo = settings.get('db_echo', 'false') - get_root = appmaker(db_string, asbool(db_echo)) + engine = engine_from_config(settings, 'sqlalchemy.') + get_root = appmaker(engine) config = Configurator(settings=settings, root_factory=get_root) config.add_static_view('static', '{{package}}:static') config.add_view('{{package}}.views.view_root', diff --git a/pyramid/paster_templates/alchemy/+package+/models.py b/pyramid/paster_templates/alchemy/+package+/models.py index 336613cf9..1134cce07 100755 --- a/pyramid/paster_templates/alchemy/+package+/models.py +++ b/pyramid/paster_templates/alchemy/+package+/models.py @@ -73,8 +73,7 @@ def populate(): session.flush() transaction.commit() -def initialize_sql(db_string, db_echo=False): - engine = create_engine(db_string, echo=db_echo) +def initialize_sql(engine): DBSession.configure(bind=engine) Base.metadata.bind = engine Base.metadata.create_all(engine) @@ -83,6 +82,6 @@ def initialize_sql(db_string, db_echo=False): except IntegrityError: pass -def appmaker(db_string, db_echo=False): - initialize_sql(db_string, db_echo) +def appmaker(engine): + initialize_sql(engine) return default_get_root diff --git a/pyramid/paster_templates/alchemy/development.ini_tmpl b/pyramid/paster_templates/alchemy/development.ini_tmpl index de4605e33..4f4b98ac0 100644 --- a/pyramid/paster_templates/alchemy/development.ini_tmpl +++ b/pyramid/paster_templates/alchemy/development.ini_tmpl @@ -5,8 +5,7 @@ debug_authorization = false debug_notfound = false debug_templates = true default_locale_name = en -db_string = sqlite:///%(here)s/{{package}}.db -db_echo = false +sqlalchemy.url = sqlite:///%(here)s/{{project}}.db [pipeline:main] pipeline = @@ -18,3 +17,37 @@ pipeline = use = egg:Paste#http host = 0.0.0.0 port = 6543 + +# Begin logging configuration + +[loggers] +keys = root, sqlalchemy + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = INFO +handlers = console + +[logger_sqlalchemy] +level = INFO +handlers = +qualname = sqlalchemy.engine +# "level = INFO" logs SQL queries. +# "level = DEBUG" logs SQL queries and results. +# "level = WARN" logs neither. (Recommended for production systems.) + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s + +# End logging configuration diff --git a/pyramid/paster_templates/pylons_basic/development.ini_tmpl b/pyramid/paster_templates/pylons_basic/development.ini_tmpl index 569256739..b14ecc7e2 100644 --- a/pyramid/paster_templates/pylons_basic/development.ini_tmpl +++ b/pyramid/paster_templates/pylons_basic/development.ini_tmpl @@ -13,10 +13,37 @@ session.key = {{project}} session.secret = {{random_string}} [pipeline:main] -pipeline = egg:WebError#evalerror - {{project}} +pipeline = + egg:WebError#evalerror + {{project}} [server:main] use = egg:Paste#http host = 0.0.0.0 port = 6543 + +# Begin logging configuration + +[loggers] +keys = root + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = INFO +handlers = console + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s + +# End logging configuration diff --git a/pyramid/paster_templates/pylons_minimal/development.ini_tmpl b/pyramid/paster_templates/pylons_minimal/development.ini_tmpl index 569256739..d31cd1ca2 100644 --- a/pyramid/paster_templates/pylons_minimal/development.ini_tmpl +++ b/pyramid/paster_templates/pylons_minimal/development.ini_tmpl @@ -20,3 +20,29 @@ pipeline = egg:WebError#evalerror use = egg:Paste#http host = 0.0.0.0 port = 6543 + +# Begin logging configuration + +[loggers] +keys = root + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = INFO +handlers = console + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s + +# End logging configuration diff --git a/pyramid/paster_templates/pylons_sqla/+package+/__init__.py_tmpl b/pyramid/paster_templates/pylons_sqla/+package+/__init__.py_tmpl index fc06c9908..867dd8b3e 100644 --- a/pyramid/paster_templates/pylons_sqla/+package+/__init__.py_tmpl +++ b/pyramid/paster_templates/pylons_sqla/+package+/__init__.py_tmpl @@ -3,15 +3,15 @@ from pyramid.settings import asbool from pyramid_beaker import session_factory_from_settings +from sqlalchemy import engine_from_config + +from {{package}}.models import initialize_sql + def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ - from {{package}}.models import initialize_sql - db_string = settings.get('db_string') - if db_string is None: - raise ValueError("No 'db_string' value in application " - "configuration.") - initialize_sql(db_string, asbool(settings.get('db_echo'))) + engine = engine_from_config(settings, 'sqlalchemy.') + initialize_sql(engine) config = Configurator(settings=settings) session_factory = session_factory_from_settings(settings) config.set_session_factory(session_factory) diff --git a/pyramid/paster_templates/pylons_sqla/+package+/models.py b/pyramid/paster_templates/pylons_sqla/+package+/models.py index 092166902..6418f0c8b 100644 --- a/pyramid/paster_templates/pylons_sqla/+package+/models.py +++ b/pyramid/paster_templates/pylons_sqla/+package+/models.py @@ -36,8 +36,7 @@ def populate(): DBSession.flush() transaction.commit() -def initialize_sql(db_string, db_echo=False): - engine = create_engine(db_string, echo=db_echo) +def initialize_sql(engine): DBSession.configure(bind=engine) Base.metadata.bind = engine Base.metadata.create_all(engine) diff --git a/pyramid/paster_templates/pylons_sqla/development.ini_tmpl b/pyramid/paster_templates/pylons_sqla/development.ini_tmpl index 936d41b29..1cc1a42e4 100644 --- a/pyramid/paster_templates/pylons_sqla/development.ini_tmpl +++ b/pyramid/paster_templates/pylons_sqla/development.ini_tmpl @@ -1,13 +1,12 @@ [app:{{project}}] use = egg:{{project}} reload_templates = true -mako.directories = {{package}}:templates debug_authorization = false debug_notfound = false debug_templates = true default_locale_name = en -db_string = sqlite:///%(here)s/tutorial.db -db_echo = true +mako.directories = {{package}}:templates +sqlalchemy.url = sqlite:///%(here)s/{{project}}.db session.type = file session.data_dir = %(here)s/data/sessions/data session.lock_dir = %(here)s/data/sessions/lock @@ -24,3 +23,37 @@ pipeline = use = egg:Paste#http host = 0.0.0.0 port = 6543 + +# Begin logging configuration + +[loggers] +keys = root, sqlalchemy + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = INFO +handlers = console + +[logger_sqlalchemy] +level = INFO +handlers = +qualname = sqlalchemy.engine +# "level = INFO" logs SQL queries. +# "level = DEBUG" logs SQL queries and results. +# "level = WARN" logs neither. (Recommended for production systems.) + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s + +# End logging configuration diff --git a/pyramid/paster_templates/routesalchemy/+package+/__init__.py_tmpl b/pyramid/paster_templates/routesalchemy/+package+/__init__.py_tmpl index e68e0ed66..f5ce7d77b 100644 --- a/pyramid/paster_templates/routesalchemy/+package+/__init__.py_tmpl +++ b/pyramid/paster_templates/routesalchemy/+package+/__init__.py_tmpl @@ -1,16 +1,14 @@ from pyramid.configuration import Configurator from pyramid.settings import asbool +from sqlalchemy import engine_from_config from {{package}}.models import initialize_sql def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ - db_string = settings.get('db_string') - if db_string is None: - raise ValueError("No 'db_string' value in application configuration.") - db_echo = settings.get('db_echo', 'false') - initialize_sql(db_string, asbool(db_echo)) + engine = engine_from_config(settings, 'sqlalchemy.') + initialize_sql(engine) config = Configurator(settings=settings) config.add_static_view('static', '{{package}}:static') config.add_route('home', '/', view='{{package}}.views.my_view', diff --git a/pyramid/paster_templates/routesalchemy/+package+/models.py b/pyramid/paster_templates/routesalchemy/+package+/models.py index a1726ebf4..9da906752 100644 --- a/pyramid/paster_templates/routesalchemy/+package+/models.py +++ b/pyramid/paster_templates/routesalchemy/+package+/models.py @@ -1,6 +1,5 @@ import transaction -from sqlalchemy import create_engine from sqlalchemy import Column from sqlalchemy import Integer from sqlalchemy import Unicode @@ -33,8 +32,7 @@ def populate(): session.flush() transaction.commit() -def initialize_sql(db_string, db_echo=False): - engine = create_engine(db_string, echo=db_echo) +def initialize_sql(engine): DBSession.configure(bind=engine) Base.metadata.bind = engine Base.metadata.create_all(engine) diff --git a/pyramid/paster_templates/routesalchemy/development.ini_tmpl b/pyramid/paster_templates/routesalchemy/development.ini_tmpl index de4605e33..a1cbff75f 100644 --- a/pyramid/paster_templates/routesalchemy/development.ini_tmpl +++ b/pyramid/paster_templates/routesalchemy/development.ini_tmpl @@ -1,20 +1,53 @@ -[app:{{package}}] -use = egg:{{package}} +[app:{{project}}] +use = egg:{{project}} reload_templates = true debug_authorization = false debug_notfound = false debug_templates = true default_locale_name = en -db_string = sqlite:///%(here)s/{{package}}.db -db_echo = false +sqlalchemy.url = sqlite:///%(here)s/{{project}}.db [pipeline:main] pipeline = egg:WebError#evalerror egg:repoze.tm2#tm - {{package}} + {{project}} [server:main] use = egg:Paste#http host = 0.0.0.0 port = 6543 + +# Begin logging configuration + +[loggers] +keys = root, sqlalchemy + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = INFO +handlers = console + +[logger_sqlalchemy] +level = INFO +handlers = +qualname = sqlalchemy.engine +# "level = INFO" logs SQL queries. +# "level = DEBUG" logs SQL queries and results. +# "level = WARN" logs neither. (Recommended for production systems.) + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s + +# End logging configuration diff --git a/pyramid/paster_templates/starter/development.ini_tmpl b/pyramid/paster_templates/starter/development.ini_tmpl index 5031742db..328422ef8 100644 --- a/pyramid/paster_templates/starter/development.ini_tmpl +++ b/pyramid/paster_templates/starter/development.ini_tmpl @@ -15,3 +15,29 @@ pipeline = use = egg:Paste#http host = 0.0.0.0 port = 6543 + +# Begin logging configuration + +[loggers] +keys = root + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = INFO +handlers = console + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s + +# End logging configuration diff --git a/pyramid/paster_templates/starter_zcml/development.ini_tmpl b/pyramid/paster_templates/starter_zcml/development.ini_tmpl index 5031742db..328422ef8 100644 --- a/pyramid/paster_templates/starter_zcml/development.ini_tmpl +++ b/pyramid/paster_templates/starter_zcml/development.ini_tmpl @@ -15,3 +15,29 @@ pipeline = use = egg:Paste#http host = 0.0.0.0 port = 6543 + +# Begin logging configuration + +[loggers] +keys = root + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = INFO +handlers = console + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s + +# End logging configuration diff --git a/pyramid/paster_templates/zodb/development.ini_tmpl b/pyramid/paster_templates/zodb/development.ini_tmpl index 85a0681b7..671c8b069 100644 --- a/pyramid/paster_templates/zodb/development.ini_tmpl +++ b/pyramid/paster_templates/zodb/development.ini_tmpl @@ -18,3 +18,29 @@ pipeline = use = egg:Paste#http host = 0.0.0.0 port = 6543 + +# Begin logging configuration + +[loggers] +keys = root + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = INFO +handlers = console + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s + +# End logging configuration |
