I have not made my mind yet. The fact is, it works great without being part of web2py.
On Jun 24, 9:05 pm, Richard <richar...@gmail.com> wrote: > so will this be integrated into web2py? > cjparsons mentioned in another thread that he has used the logging > module without > problems:http://groups.google.com/group/web2py/browse_thread/thread/55be545503... > > On Jun 18, 1:01 am, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > Can you email it to me? > > > On Jun 17, 5:30 am, Hans <johann.scheibelho...@easytouch-edv.com> > > wrote: > > > > I'm glad that its useful also to you Richard. > > > > Massimo, maybe you want to check if you want it in one of the next > > > versions. > > > > On Jun 17, 2:23 am, Richard <richar...@gmail.com> wrote: > > > > > this looks useful - thanks! > > > > > On Jun 16, 3:53 am, Hans <johann.scheibelho...@easytouch-edv.com> > > > > wrote: > > > > > > Important note: do *not* 'import logging' in your controller if you > > > > > use log.py. its done for all your controllers already in the log.py > > > > > model and it would break the log.py magic. > > > > > > On Jun 15, 7:46 pm, Hans <johann.scheibelho...@easytouch-edv.com> > > > > > wrote: > > > > > > > Log file usage in Web2py is now simpler than ever! > > > > > > You want to monitor the activities of your cron-driven web2py > > > > > > functions? > > > > > > > To use the per application log file with rotating file handler in > > > > > > web2py you need to put log.py (below) into your models folder. The > > > > > > log > > > > > > file itself is created in your_web2py_path/applications/ > > > > > > your_application/app.log > > > > > > > Writing into the log file from your controller works as follows: > > > > > > def my_function(): > > > > > > logging.debug('my function abc is starting') > > > > > > logging.error('huston we got a %s problem.' % 'major') > > > > > > return () > > > > > > > Viewing the log file through your application works as follows: > > > > > > def show_log(): > > > > > > return get_log() > > > > > > > If required the GAE solution needs work. > > > > > > A BIG thank you to Iceberg! > > > > > > Feedback and usage is welcome ;-) > > > > > > > Hans > > > > > > > Here is the log.py model version I use to enable logging for web2py > > > > > > apps. > > > > > > > import logging > > > > > > > def _init_log(level=logging.DEBUG,formatter="%(asctime)s > > > > > > %(levelname)s > > > > > > %(funcName)s():%(lineno)d %(message) > > > > > > s",filename='app.log',maxBytes=1024*1024,backupCount=2): > > > > > > import os,logging.handlers > > > > > > logger=logging.getLogger(request.application) > > > > > > logger.setLevel(level) > > > > > > 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) > > > > > > handler.setLevel(level) > > > > > > handler.setFormatter(logging.Formatter(formatter)) > > > > > > logger.addHandler(handler) > > > > > > logger.debug("web2py application %s starting" % > > > > > > request.application) > > > > > > return logger > > > > > > > def get_log(): > > > > > > try: > > > > > > f = open(logging.handlers[0].baseFilename, 'r') > > > > > > c = f.readlines() > > > > > > f.close() > > > > > > return {'log':TABLE(*[TR(str(item)) for item in c])} > > > > > > except: > > > > > > return () > > > > > > > logging=cache.ram('mylog',lambda:_init_log(),time_expire=99999999) > > > > > > > On Jun 11, 10:20 am, Iceberg <iceb...@21cn.com> wrote: > > > > > > > > Not at all. > > > > > > > > The cache.ram in log.py is to make sure the logger is inited only > > > > > > > once, otherwise we will see more and more duplicate log appearing > > > > > > > in > > > > > > > the log file as Hans mentioned in his earlier posts. The only > > > > > > > downside > > > > > > > is that you need to restart web2py if you change (but usually you > > > > > > > don't need to) log definition. > > > > > > > > As to the "OPTIONAL in controller" part, you can ignore it. They > > > > > > > are > > > > > > > just a rough demo and not necessary. > > > > > > > > On Jun11, 3:17am, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > > > > > > > Why do you need to cache the logging module? Is this only for > > > > > > > > speed? > > > > > > > > > On Jun 10, 1:44 pm, Iceberg <iceb...@21cn.com> wrote: > > > > > > > > > > After changing from FileHandler to RotatingFileHandler, now I > > > > > > > > > think > > > > > > > > > the per-app log can be turned on by default (otherwise new > > > > > > > > > comers > > > > > > > > > won't notice this good feature). > > > > > > > > > > The only thing I am still not sure is whether one can use > > > > > > > > > logging and > > > > > > > > > its FileHander (or RotatingFileHander) on GAE's readonly > > > > > > > > > filesystem. > > > > > > > > > Tests are welcome. > > > > > > > > > > Anyway, this is my latest code. Maybe it can help you. > > > > > > > > > > import logging > > > > > > > > > def _init_log(level=logging.DEBUG): > > > > > > > > > import os,logging.handlers > > > > > > > > > logger=logging.getLogger(request.application) > > > > > > > > > logger.setLevel(level) > > > > > > > > > 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,'app.log'),maxBytes=1024*1024,backupCount=2) > > > > > > > > > handler.setLevel(level) > > > > > > > > > handler.setFormatter(logging.Formatter( > > > > > > > > > "%(asctime)s %(levelname)s %(funcName)s():%(lineno)d > > > > > > > > > %(message) > > > > > > > > > s")) > > > > > > > > > logger.addHandler(handler) > > > > > > > > > return logger > > > > > > > > > > > > > > > > > > logging=cache.ram('mylog',lambda:_init_log(),time_expire=99999999) > > > > > > > > > > OPTIONAL in controller: > > > > > > > > > > def log(): > > > > > > > > > if request.vars: # append > > > > > > > > > > > > > > > > > > history=cache.ram('log_in_cache',lambda:[],time_expire=99999999) > > > > > > > > > history.append(request.vars) > > > > > > > > > cache.ram('log_in_cache',lambda > > > > > > > > > h=history:h,time_expire=0)#set > > > > > > > > > else: # show > > > > > > > > > return {'':TABLE(*[TR(item) for item in > > > > > > > > > > > > > > > > > > cache.ram('log_in_cache',lambda:None,time_expire=99999999)])} --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py Web Framework" group. To post to this group, send email to web2py@googlegroups.com To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---