That way the developer need to implement a dedicate action, perhaps protected by authentication, to access log on WEB. It is reasonable for public site, but an overkill for small enterprise intranet app.
But there is no need to argue on this, man. We can have both. If Yarin gonna implement a module in web2py/gluon/contrib, please do design a log_path parameter, which can have a default value as "private". So everybody will be happy. :-) On Jul 24, 11:54pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > I think the place for this stuff is "private". From a security point > of view log files should not by default be exposed to the public. > > On Jul 24, 10:49 am, Iceberg <iceb...@21cn.com> wrote: > > > > > Sorry I disagree. No need to take "static" literally. In web2py, > > "static" just means the content inside such directory will be served > > directly by web2py core, unlike other "dynamic" content served by > > app's controller. So it is nothing wrong to serve log file inside > > "static", no to mention the byproduct, a good one, that you log files > > can be access via HTTP natively. > > > On Jul 24, 11:09pm, Yarin Kessler <ykess...@gmail.com> wrote: > > > > @Iceberg- Thanks for all the input- I'll review your latest and update the > > > code later this weekend. With respect to log file location though, don't > > > think it makes sense to put it in static since it's a file that will be > > > written to (i.e. non static). It may need its own location, a var/ or > > > log/... Massimo, thoughts on this? > > > > On Fri, Jul 23, 2010 at 3:02 PM, Iceberg <iceb...@21cn.com> wrote: > > > > 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 <ykess...@gmail.com> > > > > To: Massimo Di Pierro <mdipie...@cs.depaul.edu> > > > > Cc: web2py-users <web2py@googlegroups.com>, Iceberg > > > > <iceb...@21cn.com>, > > > > Hans <johann.scheibelho...@easytouch-edv.com>, Richard < > > > > richar...@gmail.com>, MikeEllis <michael.f.el...@gmail.com>, cjparsons < > > > > cjparso...@yahoo.co.uk> > > > > 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,fi > > > > lename),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 > > > > > <mdipie...@cs.depaul.edu>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.