Wednesday, June 17, 2015¶
Logging optimizations¶
While looking for the explanation of a local problem in Eupen I made a
few optimizations about what to log into the system.log
file. Or more precisely what to not log there: I converted some
calls to logger.info into calls to clint.textual.puts.
This revealed the problem that clint does not seem to like unicode strings. Here is a simple example:
# -*- coding: UTF-8 -*-
from clint.textui import puts
puts(u"Ein Blumensträußchen")
According to the unicode.py example this should work. But at least on my machine (with the latest released clint, version 0.4.1) it causes the following traceback:
Traceback (most recent call last):
File "0617a.py", line 3, in <module>
puts(u"Ein Blumensträußchen")
File "/home/luc/pythonenvs/py27/local/lib/python2.7/site-packages/clint/textui/core.py", line 58, in puts
s = map(str, s)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 13: ordinal not in range(128)
Aha, I am not the first one to stumble over it: https://github.com/kennethreitz/clint/issues/48
Added new function
lino.utils.puts()
which currently just prints the string to stdout usingprint
. I prefer to use this over a plainprint
statement because I guess that there will be problems (mainly thinking about the fact that writing to stdout is considered an error in a wsgi application).In
lino.core.kernel.Kernel.kernel_startup()
we had the line:logger.info(self.welcome_text())
I first replaced it by:
puts(self.welcome_text())
But then decided to even remove it completely. Because I cannot remember a single case where it has been actually useful that this message appears automatically at the console. At least in order to observe.
Developers Guide¶
Sandeep made suggestions about the Dive into Lino. I worked on The Lino Polls tutorial.