Skip to content

Commit 9926011

Browse files
committed
add a default logger service if done defined
1 parent 80e6e46 commit 9926011

File tree

7 files changed

+42
-13
lines changed

7 files changed

+42
-13
lines changed

ioc/component.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,11 @@ def build_container(self, container):
188188

189189
extensions = []
190190
container.add("service_container", container)
191+
192+
if not container.has('logger'):
193+
import logging
194+
container.add("logger", logging.getLogger('app'))
195+
191196
self.parameters.set('ioc.extensions', self.extensions.keys())
192197

193198
for name, config in self.extensions.items():

ioc/extra/tornado/command.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
from tornado.httpserver import HTTPServer
44

55
class StartCommand(Command):
6-
def __init__(self, application, router):
6+
def __init__(self, application, router, event_dispatcher):
77
self.application = application
8+
self.event_dispatcher = event_dispatcher
89
self.router = router
910

1011
def initialize(self, parser):
@@ -15,6 +16,13 @@ def initialize(self, parser):
1516
parser.add_argument('--bind', '-b', default="localhost", type=str, help="bind the router to the provided named (default=localhost)")
1617

1718
def execute(self, args, output):
19+
20+
output.write("Configuring tornado (event: ioc.extra.tornado.start)\n")
21+
22+
self.event_dispatcher.dispatch('ioc.extra.tornado.start', {
23+
'application': self.application
24+
})
25+
1826
output.write("Starting tornado %s:%s\n" % (args.address, args.port))
1927

2028
self.router.bind(args.bind)

ioc/extra/tornado/di.py

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,29 @@ def post_load(self, container_builder):
2424
definition = container_builder.get('ioc.extra.tornado.asset_helper')
2525
definition.add_tag('jinja2.global', {'name': 'asset', 'method': 'generate_asset'})
2626

27-
def start(self, container):
28-
application = container.get('ioc.extra.tornado.application')
27+
def post_build(self, container_builder, container):
28+
self.container = container
29+
30+
container.get('ioc.extra.event_dispatcher').add_listener('ioc.extra.tornado.start', self.configure_tornado)
31+
32+
def configure_tornado(self, event):
33+
34+
application = event.get('application')
35+
36+
self.container.get('logger').info("Attach RouterHandler")
37+
2938
application.add_handlers(".*$", [
3039
("/.*", RouterHandler, {
31-
"router": container.get('ioc.extra.tornado.router'),
32-
"event_dispatcher": container.get('ioc.extra.event_dispatcher'),
33-
"logger": container.get('element.logger')
40+
"router": self.container.get('ioc.extra.tornado.router'),
41+
"event_dispatcher": self.container.get('ioc.extra.event_dispatcher'),
42+
"logger": self.container.get('logger')
3443
})
3544
])
3645

46+
self.container.get('logger').info("Attach StaticFileHandler")
47+
3748
application.add_handlers(".*$", [
38-
(container.parameters.get("ioc.extra.tornado.static_public_path") + "/(.*)", StaticFileHandler, {
39-
"path": container.parameters.get("ioc.extra.tornado.static_folder")
49+
(self.container.parameters.get("ioc.extra.tornado.static_public_path") + "/(.*)", StaticFileHandler, {
50+
"path": self.container.parameters.get("ioc.extra.tornado.static_folder")
4051
})
4152
])

ioc/extra/tornado/handler.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ def dispatch(self):
7070
return
7171

7272
except RequestRedirect, e:
73+
if self.logger:
74+
self.logger.debug("%s: redirect: %s" % (__name__, e.new_url))
75+
7376
self.redirect(e.new_url, True, 301)
7477
return
7578

@@ -88,7 +91,8 @@ def dispatch(self):
8891
import traceback
8992
self.write("<pre>" + traceback.format_exc() + "</pre>")
9093

91-
print traceback.print_exc()
94+
if self.logger:
95+
self.logger.critical(traceback.print_exc())
9296

9397
self.event_dispatcher.dispatch('handler.exception', {
9498
'request_handler': self,

ioc/extra/tornado/resources/config/services.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ services:
2323
arguments:
2424
- '@ioc.extra.tornado.application'
2525
- '@ioc.extra.tornado.router'
26+
- '@ioc.extra.event_dispatcher'
2627

2728
tags:
2829
command:

tests/ioc/test_component.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ def test_get_container(self):
171171

172172
self.container.build_container(container)
173173

174-
self.assertEquals(4, len(container.services))
174+
self.assertEquals(5, len(container.services))
175175
self.assertTrue(container.has('service.id.2'))
176176
self.assertIsInstance(container.get('service.id.2'), tests.ioc.service.Fake)
177177
self.assertIsInstance(container.get('service.id.3'), tests.ioc.service.Foo)
@@ -238,7 +238,7 @@ def test_abstracted_service_not_in_the_container(self):
238238

239239
self.container.build_container(container)
240240

241-
self.assertEquals(1, len(container.services))
241+
self.assertEquals(2, len(container.services))
242242

243243
def test_create_definition_from_abstract_definition(self):
244244
self.container.add('service.id.abstract', ioc.component.Definition('tests.ioc.service.Fake', ['foo'], abstract=True))
@@ -248,4 +248,4 @@ def test_create_definition_from_abstract_definition(self):
248248
self.container.add('service.id.1', definition)
249249

250250
container = self.container.build_container(ioc.component.Container())
251-
self.assertEquals(2, len(container.services))
251+
self.assertEquals(3, len(container.services))

tests/ioc/test_helper.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def test_build(self):
1313
"%s/../fixtures/services.yml" % current_dir
1414
], parameters={'inline': 'parameter'})
1515

16-
self.assertEquals(5, len(container.services))
16+
self.assertEquals(6, len(container.services))
1717
self.assertEquals(container.get('foo').fake, container.get('fake'))
1818
self.assertEquals('argument 1', container.get('fake').mandatory)
1919

0 commit comments

Comments
 (0)