-
Notifications
You must be signed in to change notification settings - Fork 4
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 pdgstaging #47
Comments
@mbjones Your third suggested step is "Leave the rest of the logging configuration that is currently in logging_config.py up to the calling application (e.g., viz-workflow)". The way the visualization workflow currently executes (regardless of whether you are using parsl or ray) is by running a workflow script with a command like Where do you suggest that the logging configuration that is currently in |
To the extent that viz-workflow is a library package, it should configure logging the same way as I described for viz-staging and viz-raster. That said, viz-workflow also contains a python script that runs the One of the issues we should tackle is separating out the |
The modules in import logging
from . import logging_config
logger = logging_config.logger So I will have to define the logger differently since |
Branches for these changes, named for the issue number in each repo: |
I was suggesting that a common approach to this is to move this log initialization to import logging
logger = logging.getLogger(__name__)
logger.addHandler(logging.NullHandler()) The only downside to that is that all of the logs are addressed by the package name, so if you want to control logs at the module level, then you would want to initialize the logger (in the same way as described) at the top of each module (still using |
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: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:
logger = logging.getLogger(__name__)
to the package__init__.py
I will file an identical issue for the viz-raster package, which has the same issues.
For an overview of one approach, see for example: https://stackoverflow.com/a/50751987
The text was updated successfully, but these errors were encountered: