Commit Graph

303 Commits (93b5bc6bf8de6bb5b72234551d9f8d35fcd8a217)

Author SHA1 Message Date
Dave Page 893ef4701d Fix the default value for PROXY_X_PROTO_COUNT per Aditya. 2019-10-04 12:34:59 +01:00
Dave Page 6c662ae672 PEP-8 fix. 2019-09-27 11:16:08 +01:00
Dave Page 8249e66419 Tidy up formatting and wording. 2019-09-27 10:51:18 +01:00
Akshay Joshi c580c9d4b3 Fix PEP8 issue 2019-09-27 14:27:50 +05:30
Aditya Toshniwal faf8062830 pgAdmin4 unable to work behind Nginx reverse proxy running on a non-standard port.
Werkzeug middleware allows us to set the number of trusted ports and few other params
behind the proxy. By default values are set to zero.

Added 'X-Forwarded-*' configuration options and set the default value of the port to 1 to work with non-standard port.

Fixes #4768
2019-09-27 13:24:35 +05:30
Akshay Joshi e64d6edc73 Update version for release. 2019-09-17 11:06:58 +05:30
Domenico Sgarbossa 60a6c501fb Add an Italian translation. 2019-09-02 13:35:32 +01:00
Aditya Toshniwal bc91a7c7b2 Increase cache control max age for static files to improve performance over longer run. Fixes #4681 2019-09-02 12:17:43 +05:30
Akshay Joshi 5c8aefc01e Update version for release 2019-08-20 10:26:49 +05:30
Murtuza Zabuawala ee8fec6d7f Allow enhanced cookie protection to be disabled for compatibility with dynamically addressed hosting environments. Fixes #4566 2019-08-06 09:21:31 +01:00
Dave Page 9a8a28e4f9 Allow a banner to be displayed on the login and other related pages showing custom text. Fixes #4549 2019-08-01 11:39:40 +01:00
Akshay Joshi b4d9fea83d Update version for release 2019-07-23 10:40:51 +05:30
Akshay Joshi 252429df50 Update version for release 2019-06-28 09:40:31 -04:00
Akshay Joshi 173acd46a5 Update version for release 2019-06-25 01:44:21 +05:30
Akshay Joshi 969a2961fe Update version for release. 2019-06-01 14:19:28 +05:30
Akshay Joshi 8851cb0704 Update version for release 2019-05-28 12:09:33 +05:30
Aditya Toshniwal dfa892d2a2 1. Added Master Password to increase the security of saved passwords. Fixes #4184
2. In server(web) mode, update all the saved server credentials when user password is changed. Fixes #3377
2019-05-28 12:00:18 +05:30
Khushboo Vashi 6f0eafb223 Fixed CSRF security vulnerability issue. per Alvin Lindstam. Fixes #4217
Initial patch by: Khushboo Vashi
Modified by: Ashesh Vashi and Murtuza Zabuawala
2019-05-28 10:59:51 +05:30
Akshay Joshi 991fe3d797 Update version for release. 2019-04-30 10:49:49 +05:30
Akshay Joshi ceb0e39e14 Update version for release 2019-04-08 18:31:51 +05:30
Akshay Joshi 7f23f729c6 Update version for release. 2019-04-01 15:19:25 +05:30
Dave Page ab9a3a57ad Make the Query Tool history persistent across sessions. Fixes #4017 2019-03-13 13:37:34 +00:00
Akshay Joshi 28555b387f Update version for release 2019-03-04 17:35:55 +05:30
Dave Page f72dcc23ea Allow X-FRAME-OPTIONS to be set in config.py. Default to SAMEORIGIN. Fixes #3439
DENY cannot be supported without breaking the debugger and query tool.
2019-02-12 16:17:14 +00:00
Akshay Joshi 9a758f8fd3 Update version for release. 2019-02-04 18:04:33 +05:30
Akshay Joshi 8b135f2932 Update message catalog and version for release. 2019-01-11 23:34:24 +05:30
Akshay Joshi 561ee7556f Update version for release 2019-01-07 16:14:58 +05:30
Dave Page b5c7a108ab Put the appname back how it should be! 2019-01-04 10:54:35 +00:00
Dave Page d6778aa915 Bump version prior to 4.0 2019-01-04 10:53:10 +00:00
Dave Page d7da8be486 Make the upgrade check key configurable. 2019-01-02 12:56:39 +00:00
Murtuza Zabuawala e23d307c56 Update copyright notices for 2019 2019-01-02 15:54:12 +05:30
Dave Page e2df00fc05 Use the standard copyright string. 2018-12-20 10:58:31 +00:00
Akshay Joshi 527e084ef7 Bump version number for release 2018-11-26 15:35:26 +05:30
Dave Page 29ed7ec881 Fix standalone setup script execution. 2018-11-05 13:39:43 +00:00
Akshay Joshi d97431cb4f Bump version number for release. 2018-10-29 22:29:07 +05:30
Akshay Joshi 7144db7f5a Cleanup session files periodically. Fixes #3674 2018-10-09 11:34:13 +01:00
Dave Page c092495b7a Bump version number for release. 2018-10-01 10:25:19 +01:00
Dave Page 61f00a0cbb Update versions for 3.3. 2018-09-03 10:11:34 +01:00
Isaias Sanchez 2eac2f43ac Add a Spanish translation. Fixes #3553 2018-08-08 17:17:26 +01:00
Akshay Joshi 7479467a54 Update version and message catalog for release. 2018-08-06 16:15:11 +05:30
Akshay Joshi c8c5f83dfe Add support to save and clear SSH Tunnel password. Fixes #3511 2018-08-06 15:56:46 +05:30
Aditya Toshniwal cb8a288f85 Added version number for URL's to ensure that files are only cached on a per-version basis. Fixes #2136. 2018-08-06 15:21:10 +05:30
Dave Page d7eb41fff4 Include a cacert file when needed for the upgrade check. Fixes #3185 2018-07-23 16:15:58 +01:00
Dave Page 58ef723476 SESSION_SKIP_PATHS should be set before we load local or distro config files. 2018-07-23 15:44:54 +01:00
Ioseph Kim c7325bea93 Add a Korean translation. 2018-07-12 10:02:54 +01:00
Aditya Toshniwal 82d77c4608 Don't create a session when the /misc/ping test endpoint is called. Fixes #3371 2018-07-05 11:12:03 +01:00
Dave Page f04b2e33b5 Prep for 3.1 release. 2018-06-26 11:13:46 +01:00
Akshay Joshi 28126a0a0d Fixed pep8 issue for last commit. 2018-05-18 11:30:40 +05:30
Akshay Joshi fb0c322ccf Correct the logic to set the SUPPORT_SSH_TUNNEL flag, if the flag is set the False in local config file, then we should not override it. 2018-05-18 11:26:11 +05:30
Murtuza Zabuawala a68dac97c4 Set SESSION_COOKIE_SAMESITE='Lax' per Flask recommendation to prevents sending cookies with CSRF-prone requests from external sites, such as submitting a form. Fixes #3342 2018-05-09 14:04:50 +01:00
Dave Page 554a199fd2 Bump version to avoid confusion 2018-05-04 13:52:24 +01:00
Akshay Joshi b7fb01ab04 Add support for SSH tunneled connections. Fixes #1447 2018-05-04 11:27:27 +01:00
Khushboo Vashi 413709fc78 Simplify cookie domain/path settings, per discussion. Instead of trying to be smart, just let the user specify them in the config, e.g.
COOKIE_DEFAULT_DOMAIN = None
SESSION_COOKIE_DOMAIN = None
2018-03-23 10:14:02 +00:00
Dave Page 6668d5eb93 Bump version for release. 2018-03-21 10:48:52 +00:00
Khushboo Vashi 534f1f35fe Appropriately set the cookie path. Fixes #3197 2018-03-19 17:09:19 +00:00
Fred Escallier 6c59563afa Add a French translation. Fixes #3184 2018-03-15 06:58:39 -04:00
Joao Pedro De Almeida Pereira 3a6994f719 Final PEP-8 fixes 2018-03-08 09:33:43 +00:00
Murtuza Zabuawala abf0b1a7ae Allow admins to disable the use of Gravatar if they choose. Fixes #3037 2018-03-07 16:35:33 +00:00
Dave Page 2706d9cd8e Bump the version to 3.0, per discussion on the mailing lists 2018-02-05 15:38:20 +00:00
Murtuza Zabuawala 393ce53d2d Fix PEP8 issues in the Tools module. Fixes #3063 2018-01-26 16:54:21 +00:00
Dave Page f1e39dd20c Update version number for release. 2018-01-10 09:55:13 +00:00
Dave Page 89821c0d19 Update copyright notices for 2018. 2018-01-05 10:42:50 +00:00
Dave Page d44328664a Bump version for some dev builds. 2017-12-18 10:35:58 +00:00
Dave Page 10c8befb71 Illustrate how to set the default mail sender name. 2017-11-28 09:29:31 +00:00
Alexander Lakhin 87549e0936 Add a Russian translation 2017-10-31 09:09:00 +00:00
Dave Page bc0320d21e Add a Japanese translation created by:
Junichi Tado
Nozomi Amzai
Kouske Kida
2017-10-27 14:00:09 +02:00
Dave Page d57072b156 Bump version number for release. 2017-09-29 16:00:21 +01:00
Ashesh Vashi 9c6c32e936 Resolved the logo issue.
For some unknown reason, font-mfizz was showing the slonik icon in
italic. Even after upgrading it to the latest version of font-mfizz, the
problem was not resolved.

So - instead of using the vector font, using the PostgreSQL SVG logo as
the application icon, and documentation link on dashboard now.
2017-09-29 11:07:26 +05:30
Dave Page 5ae681f2ba Bump version for RC2 release. 2017-09-18 16:15:13 +01:00
Dave Page 4b5b3195c4 Bump the build suffix in preparation for release. 2017-09-11 10:04:20 +01:00
Teng Zhang 46c5df4e7b Greenplum specific DDL and Dashboard display changes.
Initial patch by Sarah McAlear<smcalear@pivotal.io>.
2017-08-25 17:53:03 +05:30
Dave Page f195b18f2d Ship with pre-configured paths that can work in both Server and Desktop modes out of the box. Fixes #2662
Ship the web code using server mode with appropriate paths by default and enable the runtime to override the mode, and force into desktop changing the appropriate paths to user-specific ones.

Note that this change will likely cause more advanced users to have to tweak configs.

RPMs will also need changes to create /var/lib/pgadmin and /var/log/pgadmin, owned by the webserver account.
2017-08-25 10:54:28 +01:00
Dave Page fb9eee47bd Bump the version number for 2.0. Let's get testing started ASAP! 2017-08-25 10:18:42 +01:00
Dave Page ea5dfe23a0 Bump version numbers prior to release. 2017-07-10 14:56:20 +01:00
Harshal Dhumal c65158312d Use on-demand loading for results in the query tool. Fixes #2137
With a 27420 row query, pgAdmin III runs the query in 5.873s on my laptop. pgAdmin 4 now takes ~1s.
2017-06-27 09:03:04 -04:00
Khushboo Vashi 1ee555e468 Ensure the feature tests use the correct test settings database. Fixes #2486 2017-06-16 10:17:38 +01:00
Johan Van de Wauw 827aa72e99 Fix a typo in the config file 2017-06-15 15:18:59 +01:00
Dave Page f0d287588a Couple of minor performance tweaks. Tests on my Windows VM show a consistent 30% startup time reduction. 2017-06-11 13:56:49 +01:00
Dave Page f0e78309cb Bump version in preparation for release. 2017-05-15 12:25:28 +01:00
Dave Page fdf292964b Bump version numbers for release. 2017-04-10 14:24:46 +01:00
Jonas Thelemann e66616b1d8 Add German translation Fixes #2323 2017-04-05 14:02:46 +01:00
Akshay Joshi 6a861f7a91 Add the config option ALLOW_SAVE_PASSWORD to allow admins to disable saving of passwords. Fixes #2232 2017-03-31 20:14:37 -04:00
Dave Page 670c8a2cc1 Disable HTMLMIN with Python 2.6 as it doesn't work on that older version. 2017-03-09 15:21:52 +00:00
Dave Page fb44ffffa0 Fix a couple of translation issues, and remove the test French translation files. 2017-03-08 10:13:15 +00:00
Ashesh Vashi 41e0a73ea6 Adding the directory containing 'config.py' in to the sys.path variable,
so that - when config.py refered from outside the pgAdmin itself (i.e.
during building the pip).
2017-03-07 17:10:34 +05:30
Ashesh Vashi f2fc1ceba8 Resolved quite a few file-system encoding/decoding related cases.
In order to resolve the non-ascii characters in path (in user directory,
storage path, etc) on windows, we have converted the path into the
short-path, so that - we don't need to deal with the encoding issues
(specially with Python 2).

We've resolved majority of the issues with this patch.
We still need couple issues to resolve after this in the same area.

TODO
* Add better support for non-ascii characters in the database name on
  windows with Python 3
* Improve the messages created after the background processes by
  different modules (such as Backup, Restore, Import/Export, etc.),
  which does not show short-paths, and xml representable characters for
  non-ascii characters, when found in the database objects, and the file
  PATH.

Fixes #2174, #1797, #2166, #1940

Initial patch by: Surinder Kumar
Reviewed by: Murtuza Zabuawala
2017-03-07 15:31:03 +05:30
Dave Page 063177155e Bump version prior to release. 2017-03-06 15:35:08 +00:00
Atira Odhner 5fa1e83f0a Ensure feature tests use the TEST_SQLITE_PATH, not SQLITE_PATH. 2017-02-28 17:09:32 +00:00
Dave Page 24a3f3ab42 Reduce the default log level to something more sensible. 2017-02-10 21:33:57 +00:00
Dave Page d3232b2449 Fix runtime version number. 2017-02-10 12:02:42 +00:00
Dave Page 5abd62389d Bump version for release. 2017-02-06 15:45:14 +00:00
Dave Page f221194bcc Update copyright notices for 2017. 2017-01-04 13:33:32 +00:00
Dave Page 1a18e07329 Allow a placeholder ($DIR) to be used in utility paths to make it easier to use relative paths. 2016-11-23 13:35:27 +00:00
Dave Page 08396ce861 Allow default binary paths to be set in the config for each database driver. 2016-11-23 12:44:13 +00:00
Dave Page 020bf1d532 Minify HTML with Flask-HTMLMIN 2016-11-18 16:42:38 +00:00
Dave Page d5351ad657 Add file resources to the windows runtime. Fixes #1874 2016-11-18 15:46:39 +00:00
lambda 3e541ecb41 Add a Chinese (Simplified) translation. Fixes #1963 2016-11-16 09:40:56 +00:00
Dave Page 517a85866b Update version number for release. 2016-10-24 16:30:37 +01:00
Dave Page bc5cc964a3 Move security keys into the SQLite database, and auto-generate them.
This avoids packagers having to deal with the issue, which can be
difficult if they need to cater for both server and desktop modes.

Fixes #1849
2016-10-19 09:22:38 +01:00
Dave Page e06fd21f3c Bump version for release 2016-09-26 16:16:13 +01:00
Navnath Gadakh d3d8836f61 Introduce a test config database for the regression tests, and track/remove objects that are created during testing. 2016-09-14 16:26:12 +01:00
Ashesh Vashi f7dd8cbab4 Bump version for RC1 release 2016-08-29 20:37:44 +05:30
Dave Page 0ce8b031f8 More sensible defaults for the mail server settings. 2016-08-23 11:41:45 +01:00
Dave Page 050937a32a Fix WSGI support. 2016-08-18 13:43:00 +01:00
Dave Page 48384cd6cd Bump version. 2016-08-08 16:48:10 +01:00
Murtuza Zabuawala d3d96d5c05 Disable SQLALCHEMY track modification feature as it puts overhead on system, and if not set, now emits a warning. 2016-07-26 13:01:56 +01:00
Dave Page a014cf82a1 Use a numeric version check for upgrades. 2016-07-22 16:14:57 +01:00
Dave Page 8e29d16eec Beta 3 version bump 2016-07-18 16:34:00 +01:00
Dave Page c45960df5e Beta 2.1 - a favour for our friends in QA. 2016-06-30 16:05:23 +01:00
Dave Page d63b54610b Move the config database schema version out of the configuration file and into the model class.
Turns out using the config file isn't a good idea if users copy config.py to config_local.py, as it prevents upgrades to the database. This has the added side-effect of simplifying future changes, as you only need to edit 2 files to modify the config DB now, not 3.
2016-06-24 12:50:52 +01:00
Dave Page 1acc1a7678 Auto-discover locally installed servers at login. Fixes #1389 2016-06-23 16:27:06 +01:00
Murtuza Zabuawala 97d49af43a Fix constraint on server table to allow port 65535 to be used. Fixes #1388 2016-06-23 11:43:50 +01:00
Dave Page 7d0fe669ca Code tidy. 2016-06-21 14:21:06 +01:00
Dave Page 3026b470e9 Optimise Python imports. 2016-06-21 14:12:14 +01:00
Dave Page 648eebd230 Bump version for beta 2. 2016-06-21 12:20:01 +01:00
Ashesh Vashi f1eca516f0 Adding comment about setting some higher value for SQLITE_TIMEOUT, on
slower system - user may need to set the value to some higher value.

This value decide - for how long SQLITE operation will wait, before
throwing an operation timeout error because of the locked database.

Fixes #1329
2016-06-20 15:55:00 +05:30
Dave Page 5f3511ce39 Figure out storage paths in a more Windows friendly way. Fixes #1369 2016-06-16 20:11:43 +01:00
Dave Page 17b6053f45 Support distro-specific configs, and include docs in the PIP wheel.
A distro can now install a config_distro.py file alongside config.py
in which distro-specific configuration settings can be set, overriding
those in config.py. User settings in config_local.py will override
all other settings. This is useful to allow packagers to config
settings like the doc path, that may be specific to RPMs or Wheels
etc.
2016-06-15 20:56:27 +01:00
Harshal Dhumal e3ab4501d5 User management. 2016-06-06 13:34:08 +01:00
Dave Page fc654a0934 Let's make it Beta 1 2016-06-03 11:19:57 +01:00
Murtuza Zabuawala d202366a5d Fixes #1185 - While connecting to the server, application becomes almost
inaccessible.

In stand (without threaded) mode, flask application is not able to
process more than one request at a time. Hence - even the client
(browser) send multiple request, when connecting the server (which is
inaccessible), rest of operations get blocked, as making the connection
with the database server is blocking operation.

In order to fix the issue, we're starting the application with thread
support, in which it will create a separate thread of each request.
2016-06-02 14:51:33 +05:30
Dave Page 1724787f2a www.pgadmin.org now supports https. 2016-05-21 13:54:22 -04:00
Dave Page 50c134c4f1 Use a 2 part version number. We never used the first digit in 13 years of pgAdmin 3. 2016-05-17 13:10:18 -04:00
Ashesh Vashi f682f06c94 Adding a background process executor, and observer.
We will be using the external utilities like pg_dump, pg_dumpall,
pg_restore in background. pgAdmin 4 can be run as a CGI script, hence -
it is not good idea to run those utility in a controlled environment.
The process executor will run them in background, and we will execute
the process executor in detached mode.

Now that - the process executor runs in detached mode, we need an
observer, which will look at the status of the processes. It also reads
output, and error logs on demand.

Thanks - Surinder for helping in some of the UI changes.
2016-05-13 08:49:51 +05:30
Ashesh Vashi 9cdd1f8098 Added support for the server side file manager, which will be useful in
selection, creation, upload/download files/directories resides on the
server side.

This will be useful for file selection/creation for different server
side utilites like pg_dump, pg_dumpall, pg_restore.
2016-05-13 00:04:32 +05:30
Ashesh Vashi d8cbee3850 Adding the timeout for the connection on the configuration database.
While accessing the configuration database from multiple session, it
results in to the error - OperationError, because - sqlite locks all the
database, and does not allow to access it simultaneously. We added the
timeout to give some time window for accessing it simultaneously.
2016-05-10 15:59:04 +05:30
Ashesh Vashi e8b4bb909b Do not honour the session-id, longer than 40 characters, instead create
new session-id in that case.
2016-05-09 00:04:37 +05:30
Murtuza Zabuawala 3eb51e93e7 Allow Werkzeug to be configured to bind to adaptors other than localhost for testing. 2016-05-06 15:25:52 +01:00
Neel Patel 12ae40fe62 Procedural language debugger. 2016-04-14 21:36:04 +01:00
Ashesh Vashi 3c366fafe7 Server side session management support. 2016-03-22 15:05:43 +00:00
Dave Page 5ea822f33e Preferences dialogue. Patch by Ashesh and Khushboo Vashi. 2016-03-07 11:48:53 +00:00
Dave Page 2a52462dbf Add a simple version check mechanism to warn the user if a new release is available. 2016-02-08 16:28:20 +00:00
Dave Page 694506453b Copyright updates for 2016. 2016-01-18 14:48:14 +00:00
Ashesh Vashi a0cfddffdf Adding maximum session idle time in the config.py file 2015-10-22 11:49:53 +05:30
Ashesh Vashi e27e39a8f3 Added support for the infrastructure for on demand access/create the
server connection.

The BaseDriver and BaseConnection are two abstract classes, which allows
us to replace the existing driver with the currently used. The current
implementation supports to connect the PostgreSQL and Postgres Plus
Advanced Server using the psycopg2 driver.
2015-10-20 12:33:29 +05:30
Ashesh Vashi aa150030eb Introduced a mechanism to load required javascripts at runtime
(lazy loading) using the require.js. This allows us to load the
javascript required for any node, only when it was loaded in the browser
tree. Also, introduced the mechanism to show/edit/create of any node in
a tab panel (wcDocker.Panel).
2015-06-30 11:21:57 +05:30
Dave Page 7f68d6fced Update the setup script and config database to handle versioning.
This allows us to update the configuration database schema as needed,
and use the setup script to update it to the current version.

NOTE: Existing databases will need to be recreated once following
this commit. It doesn't seem worth handling the "upgrade from v0"
case when I'm probably the only active developer right now.
2015-03-09 15:06:10 +00:00
Dave Page 613df8b596 Copyright year fixes and doc tweaks. 2015-02-25 20:25:41 +00:00
Dave Page 83cbe87040 i18n support. 2015-02-25 17:06:00 +00:00
Dave Page 39089cca21 Add a Sphinx based help system, and include some initial docs on development. 2015-02-23 10:51:47 +00:00
Dave Page 89cc11fb80 This is a big one campers; Add initial support for treeview nodes.
This commit adds the following:

- Storage of server groups in the configuration database
- Creation of a default server group on in the database
- A mechanism for plugging in treeview node types
- A node type for server groups with:
  - Treeview display
  - Custom per-node javascript implementing a menu option/dialogue to add new groups
  - Custom per-node CSS to style the treeview node
- JSON formatted data in response to AJAX requests, including:
  - Success/failure indication
  - Error message
  - Extra info (e.g. stack trace)
  - The original request data
  - Additional return data, e.g. node ID and label etc.
2015-02-15 17:10:53 -05:00
Dave Page bb6a3f9b5b Use minified output when not in debug mode, and non-minified when debugging.
Update jQuery while we're at it.
2015-02-12 10:28:15 +00:00
Dave Page 53d649de70 Add support for creating dialogs, and add an About dialog.
This adds bootstrap-dialog to help with creation of nice dialogs,
and adds the ability for modules to render Javascript into the
browser, and specify onclick handlers in the menu system.

Also add a basic About dialog, using the new infrastructure and
showing some useful info about the application.
2015-01-27 16:54:39 +00:00
Dave Page d86c90fa73 Blacklist the test module by default. 2015-01-27 14:25:40 +00:00
Dave Page 7c60fb3377 Support a desktop authentication mode.
This uses a single default user in the config database, which is
auto-logged into the app when SERVER_MODE = False. In this mode we
also hide/remove user-related functions in the UI.
2015-01-26 15:20:28 +00:00
Dave Page 10515431c7 Add authentication and the basis of the browser module.
A user authentication module based on flask-security is added, which
allows users to login and change/recover passwords etc. Custom templates
are included for the user/password UIs.

A new setup script will initialise the user (and later settings) DB,
adding the first user and granting them an Administrator role.

A redirects blueprint module is added to handle simple URL redirects.

A browser module is added and currently renders a skeleton page with
a menu bar, gravatar and jumbotron.

NOTE FOR LATER: Currently this code might make the nice basis for any
web app that needs user management and plugins. Hmmm....
2015-01-22 15:56:23 +00:00
Dave Page 7b8cb207ab Support dynamically loaded modules. 2015-01-20 12:32:06 +00:00
Dave Page b9bf6d9aa3 Restructure to enable use of modules for different components of pgAdmin. 2014-12-18 17:49:09 +00:00
Dave Page 417ad2c6ee Make the application name and version details configurable. 2014-12-17 12:52:43 +00:00
Dave Page cdcafa66f2 Fix typo. 2014-12-16 17:47:33 +00:00
Dave Page a1a6e5356f More basic setup. 2014-12-16 17:37:53 +00:00
Dave Page ba939f27d7 Use multiple logging handlers so we can have messages going to both
the console and a file, with differing formats and levels.
2014-12-16 17:14:48 +00:00
Dave Page 2d21ea059b Add a basic logging system. 2014-12-16 15:54:29 +00:00