1 应用场景
日志不打印到控制台,通过网络输出到网络通信助手,不受linux系统的资源限制,不需要启动控制台,可以跟踪程序的闪退,也可以远程监视等等。
2 如何实现
linux程序或脚本重定向,使用网络通信助手接收日志,可以本地也可以远程。
参考文章
https://eli.thegreenplace.net/2015/redirecting-all-kinds-of-stdout-in-python/
https://blog.youkuaiyun.com/u012478275/article/details/90021765
3 python代码
import socket # udp
import os
# tcp
#client_socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM, 0 )
# udp client
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 接收日志的udp服务器
client_socket.connect(('192.168.1.100', 8000))
# 日志重定向
os.dup2(client_socket.fileno(), 1)
# 发送数据
#server_address = ('192.168.1.100', 8000) # 接收方 服务器的ip地址和端口号
#client_socket.sendto("123456789".encode('utf-8'), server_address) # 将msg内容发送给指定接收方
# 日志打印
#print("abcdef".encode('utf-8'))
print("abcdef")
使用NetAssist网络通信助手,开启udp服务器,设置代码和助手的IP地址与端口。
运行以上python脚本,即可收到数据和日志。
4 脚本nc命令
./task | nc 192.168.1.100 8000
task为你的可执行程序
5 C 注意点
日志打印过后,如果没有输出,添加
fflush(stdout);