我需要使用时间戳记录mysql cli命令的输出,以检查连接问题。我这样写:
echo "$(date -u) - $(mysql -u${DATABASE_USER} -p${DATABASE_PASSWORD} -h ${WRONG_HOST} -e 'quit')" >> /check_RDS.log
我看到了日志文件
tue 6 dec 2018, 10.37.04, UTC -
代替
tue 6 dec 2018, 10.37.04, UTC - ERROR 2003 (HY000): Can't connect to MySQL server on 'xx.xx.xx.xx' (111)
我也尝试过ts
mysql -u${DATABASE_USER} -p${DATABASE_PASSWORD} -h ${WRONG_HOST} -e 'quit' | ts
结果是:
ERROR 2003 (HY000): Can't connect to MySQL server on 'xx.xx.xx.xx' (111)
我如何在日志的同一行上附加日期?
答案 0 :(得分:1)
我建议先使用<View style={{backgroundColor: "#fff"}}>
<Slider
style={{ width: '90%',marginLeft:20,marginRight:20 }}
minimumValue={0}
maximumValue={100}
step={1}
value={this.state.cost}
onValueChange={cost => console.log(cost)}
/>
<Text style={{marginLeft:20,marginRight:20}}>{this.state.cost}</Text>
</View>
,然后再使用echo -n "$(date -u) - " >> check_RDS.log
命令。
mysql
将阻止换行,因此下一行将被“追加”。
您提到的另一个问题是对流(stdout和stderr)的不同处理。
echo -n
将两者结合在一起。
答案 1 :(得分:1)
无论使用哪种方法,都需要在2>&1
命令之后附加一个mysql ...
。这是因为管道以及命令替换仅使用stdin,而stderr只会显示在控制台上。
echo "$(date -u) - $(mysql -u${DATABASE_USER} -p${DATABASE_PASSWORD} -h ${WRONG_HOST} -e 'quit' 2>&1)" >> /check_RDS.log
或
mysql -u${DATABASE_USER} -p${DATABASE_PASSWORD} -h ${WRONG_HOST} -e 'quit' 2>&1 | ts
但是比echo "... $(mysql -u ... 2>&1)"
更好的是将输出直接写入文件。如tamasgal's answer中所述。