[web-devel] new fast-logger and date-cache
Kazu Yamamoto ( 山本和彦 )
kazu at iij.ad.jp
Mon Sep 3 04:56:27 CEST 2012
I have changed the API of fast-logger and changed its version to v0.3.
fast-logger v0.3 and related packages are alreay on Hackage. Since
wai-extra requires v0.2, I believe this change does not effect to
Yesod. I have already sent a pull request of wai-extra to catch up
The old fast-logger implements the caching algorithm of formatted date
which was discussed this ML. The assumption at that time is: 1)
formatting time to date string is a heavy job, and 2) issuing
gettimeofday() is a light job.
So, old algorithm is as follows:
- When a formatted date is required, first issues getttimeofday().
Then compare it with a cached time.
- If they are equal, return its cached formatted date.
- Otherwise, format the new time to a new formatted date,
cache them, and return the new formatted date.
To my experience, the assumption 2) is not right. getttimeofday()
is implemented in user land in Linux 3 but it is a system call
in Linux 2.
So, I fixed fast-logger so that it can choose caching strategy. The
pull request above does not change behavior. That is, its strategy is
the algorithm above.
I also implemented a new strategy. Designated Haskell thread issues
gettimeofday() every second, formats the resut time to a date, and
I know that people here pointed out that a Haskell thread is not waken
up correctly in heavy load situation. But I think that generating a
incorrect date in a log file is not a big problem.
The package to implement these two algorithm is "date-cache". This
package can be used not only for logging but also generating the Date:
header in HTTP Response. Mighty now uses the new algorithm of
date-chace both for logging and generating Date:.
More information about the web-devel