关于Linux输出重定向的问题

问题描述:

在运行django服务器时,想把反馈信息重定向输出到文件里。python3 manage.py runserver 0.0.0.0:80 >log并不能完成任务,url访问信息程序出错信息仍然会输出到控制台。

输出重定向很简单, echo abc > log就是把“abc”以擦写模式写到log里。。而echo abc>>log则是以追加模式写到log里。
但是这样只能重定向一些正常的输出,而一些 warming 或者 error 信息却仍然会输出到控制台上。

问题分析:

这里要清楚 stdoutstderr 区别,stdout是程序执行时正常的输出,stderr是程序运行时的警示或错误反馈。
重定向的基本语法如下:

  • >擦写的模式重定向至…
  • >>追加的模式重定向至…
  • 1 代表stdout标准输出
  • 2 代表stderr标准错误

>>>默认是···1>log,只重定向 stdout,对于 stderr则需要用 ··· 2> log来完成。

Example:

这里有一个test.py文件:

print('123')
error

第一句是正常输出“123”,第二句会出错。
执行python3 test.py:

123
Traceback (most recent call last):
  File "x.py", line 2, in <module>
    error
NameError: name 'error' is not defined

stdout重定向:python3 test.py >log

Traceback (most recent call last):
  File "x.py", line 2, in <module>
    error
NameError: name 'error' is not defined

“123”会输出到log文件里。

stderr重定向:python3 test.py 2>log

控制台只会输出“123”,而错误信息输出到log里。

解决方法

python3 manage.py runserver 0.0.0.0:80 >log 2>log
这样所有信息都重定向到log文件啦 *(@_@)*

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

师大先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值