summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.txt9
-rw-r--r--docs/narr/MyProject/development.ini26
-rwxr-xr-xpyramid/paster_templates/alchemy/+package+/__init__.py_tmpl8
-rwxr-xr-xpyramid/paster_templates/alchemy/+package+/models.py7
-rw-r--r--pyramid/paster_templates/alchemy/development.ini_tmpl37
-rw-r--r--pyramid/paster_templates/pylons_basic/development.ini_tmpl31
-rw-r--r--pyramid/paster_templates/pylons_minimal/development.ini_tmpl26
-rw-r--r--pyramid/paster_templates/pylons_sqla/+package+/__init__.py_tmpl12
-rw-r--r--pyramid/paster_templates/pylons_sqla/+package+/models.py3
-rw-r--r--pyramid/paster_templates/pylons_sqla/development.ini_tmpl39
-rw-r--r--pyramid/paster_templates/routesalchemy/+package+/__init__.py_tmpl8
-rw-r--r--pyramid/paster_templates/routesalchemy/+package+/models.py4
-rw-r--r--pyramid/paster_templates/routesalchemy/development.ini_tmpl43
-rw-r--r--pyramid/paster_templates/starter/development.ini_tmpl26
-rw-r--r--pyramid/paster_templates/starter_zcml/development.ini_tmpl26
-rw-r--r--pyramid/paster_templates/zodb/development.ini_tmpl26
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