Repository: bokeh/bokeh

Issue:
Bokeh server should display bokeh version on startup
`log.info(__version__)` would be very useful



Discussion:

Resolving patch:
diff --git a/bokeh/command/subcommands/serve.py b/bokeh/command/subcommands/serve.py
--- a/bokeh/command/subcommands/serve.py
+++ b/bokeh/command/subcommands/serve.py
@@ -239,8 +239,8 @@
 for unused sessions is 30 minutes. Only positive integer values are
 accepted.
 
-Development Options
-~~~~~~~~~~~~~~~~~~~
+Logging Options
+~~~~~~~~~~~~~~~
 
 The logging level can be controlled by the ``--log-level`` argument:
 
@@ -250,6 +250,14 @@
 
 The available log levels are: {LOGLEVELS}
 
+The log format can be controlled by the ``--log-format`` argument:
+
+.. code-block:: sh
+
+    bokeh serve app_script.py --log-format="%(levelname)s: %(message)s"
+
+The default log format is ``"{DEFAULT_LOG_FORMAT}"``
+
 '''
 from __future__ import absolute_import
 
@@ -267,11 +275,13 @@
 
 LOGLEVELS = ('debug', 'info', 'warning', 'error', 'critical')
 SESSION_ID_MODES = ('unsigned', 'signed', 'external-signed')
+DEFAULT_LOG_FORMAT = "%(asctime)s %(message)s"
 
 __doc__ = __doc__.format(
     DEFAULT_PORT=DEFAULT_SERVER_PORT,
     LOGLEVELS=nice_join(LOGLEVELS),
-    SESSION_ID_MODES=nice_join(SESSION_ID_MODES)
+    SESSION_ID_MODES=nice_join(SESSION_ID_MODES),
+    DEFAULT_LOG_FORMAT=DEFAULT_LOG_FORMAT
 )
 
 class Serve(Subcommand):
@@ -378,6 +388,13 @@ class Serve(Subcommand):
             help    = "One of: %s" % nice_join(LOGLEVELS),
         )),
 
+        ('--log-format', dict(
+            metavar='LOG-FORMAT',
+            action  = 'store',
+            default = DEFAULT_LOG_FORMAT,
+            help    = "A standard Python logging format string (default: %r)" % DEFAULT_LOG_FORMAT.replace("%", "%%"),
+        )),
+
         ('--session-ids', dict(
             metavar='MODE',
             action  = 'store',
@@ -392,7 +409,7 @@ def invoke(self, args):
         applications = build_single_handler_applications(args.files)
 
         log_level = getattr(logging, args.log_level.upper())
-        logging.basicConfig(level=log_level)
+        logging.basicConfig(level=log_level, format=args.log_format)
 
         if len(applications) == 0:
             # create an empty application by default, typically used with output_server
diff --git a/bokeh/server/server.py b/bokeh/server/server.py
--- a/bokeh/server/server.py
+++ b/bokeh/server/server.py
@@ -12,6 +12,8 @@
 
 from .tornado import BokehTornado
 
+from bokeh import __version__
+
 from bokeh.application import Application
 
 from bokeh.resources import DEFAULT_SERVER_PORT
@@ -50,6 +52,8 @@ class Server(object):
     '''
 
     def __init__(self, applications, **kwargs):
+        log.info("Starting Bokeh server version %s" % __version__)
+        
         if isinstance(applications, Application):
             self._applications = { '/' : applications }
         else:
@@ -192,4 +196,3 @@ def show(self, app_path, browser=None, new='tab'):
         from bokeh.util.browser import view
         url = "http://localhost:%d%s%s" % (self.port, self.prefix, app_path)
         view(url, browser=browser, new=new)
-


Test patch:
diff --git a/bokeh/command/subcommands/tests/test_serve.py b/bokeh/command/subcommands/tests/test_serve.py
--- a/bokeh/command/subcommands/tests/test_serve.py
+++ b/bokeh/command/subcommands/tests/test_serve.py
@@ -116,6 +116,13 @@ def test_args():
             help    = "One of: %s" % nice_join(scserve.LOGLEVELS),
         )),
 
+        ('--log-format', dict(
+            metavar='LOG-FORMAT',
+            action  = 'store',
+            default = scserve.DEFAULT_LOG_FORMAT,
+            help    = "A standard Python logging format string (default: %r)" % scserve.DEFAULT_LOG_FORMAT.replace("%", "%%"),
+        )),
+
         ('--session-ids', dict(
             metavar='MODE',
             action  = 'store',