Gunicorn: рдореИрдВ STDOUT рдкрд░ рдПрдХреНрд╕реЗрд╕рд▓реЙрдЧ рдХреИрд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░реВрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рдЬрдире░ 2016  ┬╖  22рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: benoitc/gunicorn

рдирдорд╕реНрддреЗ,

http://docs.gunicorn.org/en/stable/settings.html#accesslog рдореБрдЭреЗ рдмрддрд╛ рд░рд╣рд╛ рд╣реИ '-' stderr рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рд╣рдо рд▓реЙрдЧрд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП STDOUT рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рд╣реИ?

рдзрдиреНрдпрд╡рд╛рдж!

Documentation FeaturLogging

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝рд╛рдЗрд▓ myapp.py рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

$ python --version
Python 3.5.2
$ gunicorn --version
gunicorn (version 19.7.0)
$ gunicorn --access-logfile - myapp:app 

рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рдЖрдЙрдЯрдкреБрдЯ stdout рдкрд░ рдЬрд╛рддрд╛ рд╣реИред

рд╕рднреА 22 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдкрдВрдХреНрддрд┐ рдпрд╣рд╛рдВ рд╣реИ: https://github.com/benoitc/gunicorn/blame/master/gunicorn/glogging.py#L335 logging.StreamHandler() рдбрд┐рдлреЙрд▓реНрдЯ рд╕реЗ sys.stderr ред рд╢рд╛рдпрдж рд╣рдо "stdout" рдФрд░ "stderr" рдХреЛ рдорд╛рдиреНрдп рдорд╛рдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕рд▓реЙрдЧ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ logging.StreamHandler() рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдФрд░ рд▓реЗрдХрд┐рди рдХрдо рд▓рдЪреАрд▓рд╛ рд╕рдорд╛рдзрд╛рди:

рдХрдВрд╕реЛрд▓ рд╣реИрдВрдбрд▓рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА sys.stdout рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ: https://github.com/benoitc/gunicorn/blob/master/gunicorn/glogging.py#L64 рд╣рдо рд╣реИрдВрдбрд▓рд░ рдХреЛ gunicorn.accesslog рдХреЗ рд▓рд┐рдП "рдХрдВрд╕реЛрд▓" рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ gunicorn.error рдХреЗ рд▓рд┐рдП https://github.com/benoitc/gunicorn/blob/master/gunicorn/glogging.py#L55 рдореЗрдВ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ

рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВред рдХреНрдпрд╛ StreamHandler рдкрд╣рд▓реЗ рд╕реЗ рд╣реА sys.stdout рдкрд░ рд▓реЙрдЧ рдЗрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

рдирд╣реАрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди sys.stderr рд╣реИ: https://github.com/python/cpython/blob/master/Lib/logging/__init__.py#L955

рдареАрдХ рд╣реИ, рдореИрдВ рдЕрдм рд╕рдордЭ рдЧрдпрд╛ред рдореВрд▓ рд░реВрдк рд╕реЗ рд╣рдо рд▓реЙрдЧ рдХреЛ рд╕реНрдЯрдбрдЖрдЙрдЯ рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░ рд░рд╣реЗ рдереЗред IMO рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ STDOUT рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рдЪрд╛рд░?

@benoitc : +1:

рд╕реНрдЯрдбрдЖрдЙрдЯ рдкрд░ рд▓реЙрдЧ рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдВ
рддреНрд░реБрдЯрд┐ рд▓реЙрдЧ рдСрди stderr

рдЗрд╕ рдЕрдиреБрд░реЛрдз рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

@benoitc рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддреА рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рдХреЗ gunicorn myapp:app рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЧрдирд┐рдХреЛрд░реНрди рдХреЛ рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рд░рд┐рдХреЙрд░реНрдб рд▓реЙрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдЧрдирд┐рдХреЛрд░реНрди рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рдХреЗ https://github.com/benoitc/gunicorn/blob/master/gunicorn/glogging.py#L302 рдореЗрдВ self.cfg.accesslog None рд╣реИ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдЬрд▓реНрджреА рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ --log-config рдпрд╛ --log-syslog рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ stdout рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдпреЗ рд╕рд╣реА рд╣реИ?

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рдЕрдХреНрд╖рдо рд╣реИ рдпрджрд┐ рдЖрдкрдХрд╛ рдпрд╣реА рдорддрд▓рдм рд╣реИ?

@benoitc рд╣рд╛рдБред рдКрдкрд░ рдХреА рдЪрд░реНрдЪрд╛ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рд╕реНрдЯрдбрдЖрдЙрдЯ рдореЗрдВ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рддреНрд░реБрдЯрд┐ рд▓реЙрдЧ stderr рдкрд░ рдЬрд╛рдПрдВрдЧреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧрд┐рдВрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рд╣реИред

BTW, рдкрд╛рдпрдерди 2.7 рдХреЗ рд╕рд╛рде рдореИрдВ --access-log /dev/stdout --error-log /dev/stderr рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдкрд╛рдпрдерди 3 рдХреЗ рд╕рд╛рде, /dev/stdout рдХреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ https://github.com/benoitc/gunicorn/blob/f722a6eb65e51407c420ac3d6be72d03bd773ad0/gunicorn/util.py#L498 рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ

ЁЯСН @suriya рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╡рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдвреВрдВрдв рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдЖрдк рд╣реИрдВ - рдореИрдВ --capture-log рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ --access-logfile=<something> рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореЗрд░реА рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рд▓рд╛рдЗрдиреЗрдВ рд╕реНрдЯрдбрдЖрдЙрдЯ рдкрд░ рдЬрд╛рдПрдВ рд╕реНрдЯреЗрдбрд░ рдирд╣реАрдВред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ Python3 рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред python3.5.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, --access-logfile=/dev/stdout рдХреЛ gunicorn рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╕рд░реНрд╡рд░ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

рд╣рд╛рдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧрд┐рдВрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рд╣реИред

@huoxy рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗ рдЕрдзрд┐рдХ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

@huoxy --access -logfile=-` рдЪрд╛рд▓ рдЪрд▓рдиреА рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдЕрдЧрд░ рдирд╣реАрдВред

  • рдмреЗрдиреЛрдЗрдЯ
    рдмреБрдзрд╡рд╛рд░, 27 рдЬреБрд▓рд╛рдИ 2016 рдХреЛ 08:49 рдмрдЬреЗ, рд╕реВрд░реНрдпрд╛ рд╕реБрдмреНрд░рдордгреНрдпрдо рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
    рд▓рд┐рдЦрд╛ рдерд╛:

@huoxy https://github.com/huoxy рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗ рдЕрдзрд┐рдХ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ
рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/benoitc/gunicorn/issues/1184#issuecomment -235501347,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAA4oj67GbLqwaJaCQ9NOH7-iAXJoMxGks5qZv9fgaJpZM4HHW4G
.

рдпрд╣ рднреА рд╢рд╛рдпрдж рдПрдХ рдбреЙрдХреНрдЯрд░ рдореБрджреНрджрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рдХреЛ stdout рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рдЬрдм - рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИред рдореБрдЭреЗ рдмрддрд╛рдУ...
рдмреБрдз, 27 рдЬреБрд▓рд╛рдИ 2016 рдХреЛ 09:03 рдмрдЬреЗ, рдмреЗрдиреЛрдЗрдЯ рдЪреЗрд╕рдиреНрдпреВ [email protected] рдиреЗ рд▓рд┐рдЦрд╛:

@huoxy --access -logfile=-` рдЪрд╛рд▓ рдЪрд▓рдиреА рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдЕрдЧрд░ рдирд╣реАрдВред

  • рдмреЗрдиреЛрдЗрдЯ
    рдмреБрдзрд╡рд╛рд░ 27 рдЬреБрд▓рд╛рдИ 2016 рдХреЛ 08:49 рдмрдЬреЗ, рд╕реВрд░реНрдпрд╛ рд╕реБрдмреНрд░рдордгреНрдпрдо рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
    рд▓рд┐рдЦрд╛ рдерд╛:

@huoxy https://github.com/huoxy рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗ рдЕрдзрд┐рдХ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ
рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/benoitc/gunicorn/issues/1184#issuecomment -235501347,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAA4oj67GbLqwaJaCQ9NOH7-iAXJoMxGks5qZv9fgaJpZM4HHW4G
.

@benoitc рдЬреИрд╕рд╛ рдХрд┐ #1293 рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, gunicorn --access-log - рд▓реЙрдЧ рдорд╛рдирдХ рддреНрд░реБрдЯрд┐ рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИред рдореИрдВрдиреЗ gunicorn --access-log=- рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рд▓реЙрдЧ рдЕрднреА рднреА рдорд╛рдирдХ рддреНрд░реБрдЯрд┐ рдкрд░ рдЬрд╛рддрд╛ рд╣реИред

рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░:
https://github.com/gunicorn/gunicorn/blob/master/gunicorn/glogging.py#L58

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ console рд╣реИ рдЬреЛ рд╕реНрдЯрдбрдЖрдЙрдЯ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреЛ рдореЗрд░реА рддрд░рд╣ рд╕реНрдЯрдбрдЖрдЙрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдЪрд╛рд╣рд┐рдП, рддреЛ рд╕рдм рдХреБрдЫ рдЧрдирд┐рдХреЛрд░реНрди рд▓реЙрдЧрд┐рдВрдЧ рдбреНрд░рд╛рдЗрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдмрд╕ рдЙрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЦрд╛рд▓реА рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рд╛рде рд╣реА, рдореИрдВ рдЬреЛ рд╕рдорд╛рдзрд╛рди рд╕реБрдЭрд╛рдКрдВрдЧрд╛, рд╡рд╣ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП /dev/stdout рдпрд╛ /dev/stderror рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдмрдирд╛рдирд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рд╕реАрдзреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

ln -sf /var/log/gunicorn.access.log  /dev/stdout
ln -sf /var/log/gunicorn.error.log  /dev/stdout

exec newrelic-admin run-program gunicorn --chdir /usr/src/app --name nexchange --bind 0.0.0.0:${GUNICORN_PORT} --workers 3 --log-level=info --log-file=/var/log/gunicorn.error.log --access-logfile=/var/log/gunicorn.access.log nexchange.wsgi:application "$@"

рдореИрдВ рдЕрднреА рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ рд░рд┐рд▓реАрдЬ рд╣реБрдИ 19.7.0 рдЧрдирд┐рдХреЛрд░реНрди рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдЕрднреА рднреА stderr рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рдХрд▓реНрдк рдХреЗ рдЧрдирд┐рдХреЛрд░реНрди рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ "--access-logfile=- --error-logfile=- --log-level=DEBUG" рд╕рд╣рд┐рдд/рдирд╣реАрдВ рдХреЗ рд╕рднреА рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рдеред

рдХреНрдпрд╛ рдореБрдЭреЗ рдЧрдирд┐рдХреЛрд░реНрди рдХреЗ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИ? рдХреНрдпрд╛ рдореЗрд░реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдпрд╛ Django рд╕реЗ рдХреБрдЫ рд╕рдВрднрд╡рддрдГ рдЦреВрди рдмрд╣ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрди рд░рд╣рд╛ рд╣реИ?

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝рд╛рдЗрд▓ myapp.py рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

$ python --version
Python 3.5.2
$ gunicorn --version
gunicorn (version 19.7.0)
$ gunicorn --access-logfile - myapp:app 

рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рдЖрдЙрдЯрдкреБрдЯ stdout рдкрд░ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ рдкрд╛рдпрдерди 2.7.14 рдкрд░ рд╣реВрдВред (рдХрд┐рд╕реА рддрд░рд╣ рдорд╣реАрдиреЛрдВ рдкрд╣рд▓реЗ рддреНрд╡рд░рд┐рдд рдЙрддреНрддрд░ рдЪреВрдХ рдЧрдПред)

рдЖрдк рдЕрдкрдиреЗ gunicorn.config.py . рдореЗрдВ рднреА accesslog = "-" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Bogdanp picture Bogdanp  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alep picture alep  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mrwillis picture mrwillis  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Abraxos picture Abraxos  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mw44118 picture mw44118  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ