Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

remove hardcoded logging config for pdgraster #27

Open
3 tasks
mbjones opened this issue Mar 26, 2024 · 0 comments
Open
3 tasks

remove hardcoded logging config for pdgraster #27

mbjones opened this issue Mar 26, 2024 · 0 comments
Labels
bug Something isn't working pdg

Comments

@mbjones
Copy link
Member

mbjones commented Mar 26, 2024

The current logging configuration in logging_config.py hardcodes some logging configuration, which causes difficult errors in some deployment scenarios. For example, because a logging FileHandler is hardcoded to use the file /tmp/log.log, if multiple users try to use the library on the same machine, they get permissions errors because they can't create the needed logging file on import.

In general, packages and library modules should not configure logging, rather deferring to the main module to configure logging in a way that works for its deployment scenario. This is described in the logging tutorial here: https://docs.python.org/2/howto/logging.html#logging-from-multiple-modules

The only thing that a typical package or module should configure for logging is to set a name for its logger, which by convention is set to the package or module __name__, which allows the logs from each module to be distinguished and controlled independently. This is typically done for the package in the __init__.py file with a statement like:

logger = logging.getLogger(__name__)

Module level loggers should use the same code, but are typicially initialized at the top of the module. See the tutorial for details: https://docs.python.org/2/howto/logging.html#advanced-logging-tutorial

In our case, I think a simple logging scenario would be to:

  • delete pdgstaging/logging_config.py
  • add logger = logging.getLogger(__name__) to the package __init__.py
  • Leave the rest of the logging configuration that is currently in logging_config.py up to the calling application (e.g., viz-workflow)

I will file an identical issue for the viz-staging package, which has the same issues.

For an overview of one approach, see for example: https://stackoverflow.com/a/50751987

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working pdg
Projects
Status: Backlog
Development

No branches or pull requests

1 participant