diff --git a/CHANGELOG.md b/CHANGELOG.md index 24ac59c2f..b0737db1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,17 @@ All notable changes to this project will be documented in this file. Given the high speed of development in the first phase, changes are being reported only starting from v0.20.2. +## [Unreleased] + +### Added + +- Added `[-v|--verbose]` command-line option to override the default logging + configuration and enable debug logging. +- Added `--version` command-line option to print the current version and exit. + ## [0.24.2] - 2022-12-10 -## Fixed +### Fixed - The `main.db` configuration should use the configured `workdir` when no values are specified. diff --git a/platypush/__init__.py b/platypush/__init__.py index edc1f12d8..78ffb1b3c 100644 --- a/platypush/__init__.py +++ b/platypush/__init__.py @@ -59,6 +59,7 @@ class Daemon: no_capture_stdout=False, no_capture_stderr=False, redis_queue=None, + verbose=False, ): """ Constructor @@ -74,6 +75,7 @@ class Daemon: no_capture_stderr -- Set to true if you want to disable the stderr capture by the logging system redis_queue -- Name of the (Redis) queue used for dispatching messages (default: platypush/bus). + verbose -- Enable debug/verbose logging, overriding the stored configuration (default: False). """ if pidfile: @@ -84,7 +86,10 @@ class Daemon: self.redis_queue = redis_queue or self._default_redis_queue self.config_file = config_file Config.init(self.config_file) - logging.basicConfig(**Config.get('logging')) + logging_conf = Config.get('logging') or {} + if verbose: + logging_conf['level'] = logging.DEBUG + logging.basicConfig(**logging_conf) redis_conf = Config.get('backend.redis') or {} self.bus = RedisBus( @@ -116,6 +121,21 @@ class Daemon: default=None, help=cls.config_file.__doc__, ) + parser.add_argument( + '--version', + dest='version', + required=False, + action='store_true', + help="Print the current version and exit", + ) + parser.add_argument( + '--verbose', + '-v', + dest='verbose', + required=False, + action='store_true', + help="Enable verbose/debug logging", + ) parser.add_argument( '--pidfile', '-P', @@ -154,12 +174,18 @@ class Daemon: ) opts, args = parser.parse_known_args(args) + + if opts.version: + print(__version__) + sys.exit(0) + return cls( config_file=opts.config, pidfile=opts.pidfile, no_capture_stdout=opts.no_capture_stdout, no_capture_stderr=opts.no_capture_stderr, redis_queue=opts.redis_queue, + verbose=opts.verbose, ) def on_message(self):