It looks like it uses one handler although the logger rotates the actual log files. I think that I would need to shut down the logger before or at the beginning of the uninstall step, but as the "uninstall application" is run from the admin app, it would be a bit tricky to implement the shutdown for a specific application in the admin application code. If there was an app.shutdown() method maybe....
For the moment I am first shutting down the application pool in IIS and then deleting the app but I would prefer a coded solution. We son't delete applications aften, so the work-around is acceptable for the moment. On Tuesday, October 27, 2020 at 4:23:09 AM UTC+1 [email protected] wrote: > Ah, i see. Can you temporarily shutdown() the logger and then restart it > when the uninstall is complete? Or does it need to stay running also? I > think it is possible to close a specific handler as well - but i dont know > how the logging works in web2py - maybe there is a single handler for all > the apps (if you can't tell, i have never used it before :) > > > ___________________________ > *www.TenOutOfTen.org* <https://www.TenOutOfTen.org> > [email protected] > (+95) 09 250018669 <+95%209%20250%20018%20669> (Myanmar) > > > On Mon, 26 Oct 2020 at 23:37, Davidiam <[email protected]> wrote: > >> Thank you for your reply, >> Deleting the application folder gives the same error. >> The problem is that the logger holds the log file locked. If I restart >> the webserver I can delete the file, but our developers can't restart web >> services. >> It is not a big problem but I would like to find a solution (if one >> exists).. >> >> On Monday, October 26, 2020 at 4:56:30 AM UTC+1 [email protected] wrote: >> >>> Hi David >>> >>> I am not sure that i have ever used the Uninstall option. I just delete >>> the application folder and the application disappears. I am not sure if >>> that leaves any residual information in files somewhere. But i have not >>> noticed a problem. >>> >>> Does that work for you? >>> Andrew >>> >>> ___________________________ >>> *www.TenOutOfTen.org* <https://www.TenOutOfTen.org> >>> [email protected] >>> (+95) 09 250018669 <+95%209%20250%20018%20669> (Myanmar) >>> >>> >>> >>> On Fri, 23 Oct 2020 at 17:07, Davidiam <[email protected]> wrote: >>> >>>> When using logging in web2py on Windows, we are unable to delete >>>> applications unless we first stop the server. >>>> >>>> The reason is that the app.log is considered "in use". >>>> >>>> As the uninstall happens from the admin app, I am not quite sure how >>>> best to stop the logger in the application that is being uninstalled when >>>> the "Uninstall" option is selected from admin. >>>> >>>> Anyone have any ideas on how to unistall an app that uses logging. >>>> Apparently this is only an issue on Windows because the os.unlink works on >>>> "in use" files on linux systems. >>>> >>>> Note : We have defined the location of the log files within the >>>> application directory structure so that the developers have access to the >>>> files. >>>> >>>> This is the logging code used : >>>> def get_configured_logger(name): >>>> Test = False >>>> logger = logging.getLogger(name) >>>> if (len(logger.handlers) == 0): >>>> # This logger has no handlers, so we can assume it hasn't yet been >>>> configured >>>> # (Configure logger) >>>> >>>> # Create default handler >>>> if request.env.web2py_runtime_gae: >>>> # Create GAEHandler >>>> handler = GAEHandler() >>>> else: >>>> # Create RotatingFileHandler >>>> import os >>>> formatter="%(asctime)s %(levelname)s %(process)s %(thread)s >>>> %(funcName)s():% (lineno)d %(message)s" >>>> handler = >>>> logging.handlers.RotatingFileHandler(os.path.join(request.folder, >>>> 'private/app.log'), maxBytes=1000000,backupCount=2) >>>> handler.setFormatter(logging.Formatter(formatter)) >>>> >>>> handler.setLevel(logging.DEBUG) >>>> >>>> logger.addHandler(handler) >>>> logger.setLevel(logging.DEBUG) >>>> >>>> # Test entry: >>>> >>>> if Test == True: >>>> logger.debug(name + ' logger created') >>>> else: >>>> # Test entry: >>>> if Test == True: >>>> logger.debug(name + ' already exists') >>>> >>>> return logger >>>> >>>> -- >>>> Resources: >>>> - http://web2py.com >>>> - http://web2py.com/book (Documentation) >>>> - http://github.com/web2py/web2py (Source code) >>>> - https://code.google.com/p/web2py/issues/list (Report Issues) >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "web2py-users" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/web2py/c9b3c32c-6cfc-4b5f-9894-a62d16898ea5n%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/web2py/c9b3c32c-6cfc-4b5f-9894-a62d16898ea5n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- >> Resources: >> - http://web2py.com >> - http://web2py.com/book (Documentation) >> - http://github.com/web2py/web2py (Source code) >> - https://code.google.com/p/web2py/issues/list (Report Issues) >> --- >> You received this message because you are subscribed to the Google Groups >> "web2py-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> > To view this discussion on the web visit >> https://groups.google.com/d/msgid/web2py/4af7b1b3-1161-4252-80fe-0f89e125db82n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/web2py/4af7b1b3-1161-4252-80fe-0f89e125db82n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/dceb7d42-ce38-4a13-914e-176026208c03n%40googlegroups.com.

