We found that by modifying the gluon\admin.py app_uninstall function, we
could search for the open log file handles and close them before the actual
delete of the files is performed.
import logging
import logging.handlers
for nm, lgr in logging.root.manager.loggerDict.items():
if str(nm) == str(app):
for h in lgr.handlers:
h.close()
On Tuesday, October 27, 2020 at 2:09:51 PM UTC+1 Davidiam wrote:
> 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/fa59697a-1c8c-461f-b3e8-472f8eb12c94n%40googlegroups.com.