Sorry Hans, I still do not understand the problem. code outside function is executed when a function in the controller is called (whatever the function) code in the function is executed only when that function is called. A call to redirect causes the browser to make another request thus the controller is executed again.
Massimo On Jun 5, 8:08 am, Hans <johann.scheibelho...@easytouch-edv.com> wrote: > Correction: redirect() usage is NOT causing the problem. Every call of > a controller function also executes > 1) general parts of the model (db.py) > 2) general parts of the controller (default.py) > 3) the requested function in controller > > In my case every click to an menu function adds another multiple for > log entries. > > Thinking about the response.menu example which gives you different > menu options depending on the user being logged in or not I'm > convinced that the general controller sections are executed before > each requested function. That's good for the dynamically changing menu > and other needs. > > For a log file function which should be available for the entire > controller I need to make sure its executed only once. Is there a > simple way to do that or a different way to achieve a log file > function (similar like my example up in this thread) available for the > entire controller? > > Thanks, > Hans > On Jun 5, 2:34 pm, Hans <johann.scheibelho...@easytouch-edv.com> > wrote: > > > yes confirmed, the controller is called multiple times. the reason I > > found is that the redirect() statements I use cause this. every > > redirect() seems to call the controller, not only the redirection > > target function. > > > for example my index is mainly a redirect function, based on settings > > its for instance doing > > redirect(URL(r=request,f='f1')) > > > then also in other functions I use redirects e.g. based on rights/ > > settings. > > > I'm using 1.63.5 on WinXP SP3. > > > Is there a better function than redirect() for avoiding to call the > > general controller stuff multiple times? > > Is redirect() supposed to also call the general controller stuff or > > only directly the redirection target function ? > > > Thanks, > > Hans > > On Jun 4, 10:48 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > > Odd I think your controller is being called 3 times. Is that possible? > > > I would add a print statement to check. > > > > On Jun 4, 2:29 pm, Hans <johann.scheibelho...@easytouch-edv.com> > > > wrote: > > > > > I tried to define a global logging for a web2py app. The problem with > > > > that is that if I place the following code in my default.py controller > > > > or db.py model then in both cases its executed more than > > > > once...resulting into having every log line written multiple times > > > > into the log file. > > > > > either starting the default.py or db.py with those lines is yielding > > > > the same result > > > > import logging, logging.handlers > > > > > # Make a global logging object. > > > > lox = logging.getLogger("log") > > > > lox.setLevel(logging.DEBUG) > > > > > # This handler writes everything to a file. > > > > h1 = logging.FileHandler("/var/log/myapp.log") > > > > f = logging.Formatter("%(levelname)s %(asctime)s %(funcName)s % > > > > (lineno)d %(message)s") > > > > h1.setFormatter(f) > > > > h1.setLevel(logging.DEBUG) > > > > lox.addHandler(h1) > > > > > # This handler emails me anything that is an error or worse. > > > > h2 = logging.handlers.SMTPHandler('localhost', '....@test.com', > > > > ['tobenotif...@test.com'], 'ERROR log') > > > > h2.setLevel(logging.ERROR) > > > > h2.setFormatter(f) > > > > lox.addHandler(h2) > > > > > log usage example in controller... > > > > def index(): > > > > log = logging.getLogger("log") > > > > log.debug("starting...") > > > > ....do something > > > > log.debug("finishing...") > > > > return() > > > > > log file looks like: > > > > DEBUG 2009-06-04 20:27:45,617 index 1 starting... > > > > DEBUG 2009-06-04 20:27:45,617 index 1 starting... > > > > DEBUG 2009-06-04 20:27:45,617 index 1 starting... > > > > DEBUG 2009-06-04 20:27:50,617 index 1 finishing... > > > > DEBUG 2009-06-04 20:27:50,617 index 1 finishing... > > > > DEBUG 2009-06-04 20:27:50,617 index 1 finishing... > > > > > how can I fix the 'multiple problem' ? > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---