Opened 3 years ago

Last modified 4 months ago

#21429 assigned New feature

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
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: yes
Easy pickings: no UI/UX: no


Since python offers the powerful logging class, should use it to output messages instead of using custom output wrappers (

Doing so, we could override those loggers in the 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):'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 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

I worked on that idea in #15107 (that I just closed).

comment:2 Changed 22 months ago by berkerpeksag

  • Has patch set
  • Owner changed from nobody to berkerpeksag
  • Status changed from new to assigned

This PR implements an initial integration of logging module in BaseCommand. I've also updated the documentation a bit. If this approach is okay, I'll update all management commands and tests.

comment:3 Changed 22 months ago by claudep

Do we want to keep the old stdout/stderr way of outputting messages in addition to the new API? This would make self.stdout.write/ and self.stderr.write/self.error redundants. Or did you intend to deprecate self.stdout/self.stderr?

comment:4 Changed 22 months ago by berkerpeksag

Or did you intend to deprecate self.stdout/self.stderr?

Yes, but I couldn't find a simple way to deprecate them yesterday. Today, here is my approach:

PR updated to address Simon's comments.

comment:5 Changed 20 months ago by timgraham

  • Patch needs improvement set

comment:6 Changed 4 months ago by sposs

I saw that the pull request was closed on github. Are there any plans to revive this? It would be very nice to be able to configure logging like everywhere else...

comment:7 Changed 4 months ago by timgraham

Feel free to resume work on the patch if you like.

Note: See TracTickets for help on using tickets.
Back to Top