Well done Yarin! Some comments. 1. Change those time_expire=99999999 into time_expire=None please. The clumsy 99999999 trick was my early "invention" before I know the time_expire=None approach.
2. My another later improvement is to write the log file at {web2py
path}/applications/{your app}/static/app.log
so that developer can easily access the log file by
http://your_host/your_app/static/app.log
Well, you can refer to the attachment for my latest implementation. Some more
trick inside.
3. @Massimo, I suggested to include the applog.py into welcome/model/applog.py
since day1 I invented this little component. Only this way people will have an
official place to always have the latest code, rather than dig some
not-the-latest post from different places. So please do consider it this time.
4. @Yarin, when last time I said "putting the web2py db instance, rather than a
filename, to initialize your SQLiteHandler() class", I mean something like:
def _init_sqlite_log(level=logging.DEBUG):
handler = SQLiteHandler( db ) # db is defined by: db =
DAL('sqlite://storage.sqlite')
# or
handler = SQLiteHandler( DAL('sqlite://log.sqlite') )
There is some more implementation to do, but you get the idea.
5. With respect to GAE, this was my "concept vehicle":
if request.env.web2py_runtime_gae: # if running on Google App Engine
handler=logging.handlers.HTTPHandler(request.env.http_host,URL(r=request,f='log'))
# assuming there is an optional log action
but I never test it. I think a practical solution would be implement some log
handler which wraps GAE's own log facility.
Best regards,
Iceberg, 2010-Jul-24, 02:35(AM), Sat
----------------------- Original Message -----------------------
From: Yarin Kessler <[email protected]>
To: Massimo Di Pierro <[email protected]>
Cc: web2py-users <[email protected]>, Iceberg <[email protected]>,
Hans <[email protected]>, Richard <[email protected]>,
MikeEllis <[email protected]>, cjparsons <[email protected]>
Date: Fri, 23 Jul 2010 09:56:17 -0400
Subject: Re: SQLite Logging
-------------------
> Glad you like- I'd love to see this as part of the core. Let me know if
> there's anything else I can do.
>
> >I am not so keen to include the sqlite part because it is too specific
>
> Is this because it requires the extra module? I kept it separate because
> it's a Python, not web2py, specific class, but we could easily bake it into
> log.py.
> Personally I'm a big fan of SQLite for logging- what would it take to make
> it less specific and ready for inclusion?
>
> >we would need a way to deal with GAE/
>
> Hans/Iceberg had a GAE solution in their orig file, but I haven't tested it:
>
> if request.env.web2py_runtime_gae: # if running on Google App Engine
>
>
> handler=logging.handlers.HTTPHandler(request.env.http_host,URL(r=request,f='log'))
> # assuming there is an optional log action
> else:
>
>
> handler=logging.handlers.RotatingFileHandler(os.path.join(request.folder,filename),maxBytes=maxBytes,backupCount=backupCount)
>
> I'll re-introduce it into the code though.
>
>
> On Fri, Jul 23, 2010 at 9:38 AM, Massimo Di Pierro
> <[email protected]>wrote:
>
> > Very good work. We should think about a way to include this in web2py core.
> >
> > I am not so keen to include the sqlite part because it is too specific but:
> >
> > I see the log.py file could go in contrib with minimal changes (it it were
> > implemented as a function that takes the request and cache objects)
> >
> > we would need a way to deal with GAE/
> >
> >
> > On Jul 23, 2010, at 8:24 AM, Yarin wrote:
> >
> > Added a slice: Application Logging
> >> http://web2pyslices.com/main/slices/take_slice/91
> >>
> >> It covers logging to both a file and SQLite. The code is well
> >> documented- use this instead of the previous code. Would love to get
> >> your comments.
> >>
> >> @Iceberg, btw apparently the SQLite cross-thread issues weren't solved
> >> by using the default DB after all. I added a thread-safe work around,
> >> but suggestions are welcome.
applog.py
Description: Binary data

