求教 Django(DRF)日志最佳实践
求教各位,DRF 、gunicorn 、supervisor 部署的后端,有没有关于日志的最佳实践 为了能实现日志按天分隔,因为有多线程,默认人 log handler 会有问题,遂重写了个 handler 同时 gunicorn 本身的日志貌似也有点问题
求教各位有没有什么开源项目可以考下,我看了很多项目,对日志这一块都没有什么比较好的处理,很多项目甚至都没有记录日志
求教各位,DRF 、gunicorn 、supervisor 部署的后端,有没有关于日志的最佳实践 为了能实现日志按天分隔,因为有多线程,默认人 log handler 会有问题,遂重写了个 handler 同时 gunicorn 本身的日志貌似也有点问题
求教各位有没有什么开源项目可以考下,我看了很多项目,对日志这一块都没有什么比较好的处理,很多项目甚至都没有记录日志
代码里没写接信号重新打开 fd 尽量不要直接用 logrotate 分割
人家 nginx 是收了信号的
一点经验
这里的 MultiProcessTimedRotatingFileHandler 可以参考下,只能按天切割
没支持按大小切割,当日志量比较大的话,grep 很慢,这是个坑。。。
监控到事件以后重新打开文件
这样可以用 logrotate 灵活配置
可以参考 oslo_log.watchers.FastWatchedFileHandler
https://channels.readthedocs.io/en/stable/deploying.html
[fcgi-program:asgi]
# TCP socket used by Nginx backend upstream
socket=tcp://localhost:8000
# Directory where your site’s project files are located
directory=/my/app/path
# Each process needs to have a separate socket file, so we use process_num
# Make sure to update “mysite.asgi” to match your project name
command=daphne -u /run/daphne/daphne%(process_num)d.sock –fd 0 –access-log – –proxy-headers mysite.asgi:application
# Number of processes to startup, roughly the number of CPUs you have
numprocs=4
# Give each process a unique name so they can be told apart
process_name=asgi%(process_num)d
# Automatically start and recover processes
autostart=true
autorestart=true
# Choose where you want your log to go
stdout_logfile=/your/log/asgi.log
redirect_stderr=true