BaseCommand should use logging instead of custom output wrappers
|Reported by:||Nical||Owned by:||berkerpeksag|
|Component:||Core (Management commands)||Version:||master|
|Severity:||Normal||Keywords:||command output logger|
|Has patch:||yes||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||yes|
Since python offers the powerful logging class, django.core.management.base.BaseCommand should use it to output messages instead of using custom output wrappers (django.core.management.base.OutputWrapper).
Doing so, we could override those loggers in the settings.py file.
Instead of having two wrappers in a command and having to do:
class Command(BaseCommand): def handle(self): self.stdout.write('this is an info message') self.stderr.write('this is an error message')
We could do
class Command(BaseCommand): def handle(self): self.output.info('this is an info message') self.output.error('this is an error message') # and even self.output.warning('this is a warning message')
The style_func and ending arguments that the django.core.management.base.OutputWrapper.write method takes could be removed and be configured at once in a overriding custom logger.
Change History (7)
comment:1 Changed 3 years ago by claudep
- Needs documentation unset
- Needs tests unset
- Patch needs improvement unset
- Triage Stage changed from Unreviewed to Accepted
- Version changed from 1.6 to master
comment:2 Changed 21 months ago by berkerpeksag
- Has patch set
- Owner changed from nobody to berkerpeksag
- Status changed from new to assigned