我在HDFS
中有shell脚本。我想仅在HDFS中收集此脚本的日志。
脚本的内容如下:
#!/bin/bash
TIMESTAMP=`date "+%Y-%m-%d"`
hdfs dfs -touchz /user/$USER/logs/`date "+%Y-%m-%d"`/${TIMESTAMP}.success_log
hdfs dfs -touchz /user/$USER/logs/`date "+%Y-%m-%d"`/${TIMESTAMP}.fail_log
success_logs=/user/$USER/logs/`date "+%Y-%m-%d"`/${TIMESTAMP}.success_log
failed_logs=/user/$USER/logs/`date "+%Y-%m-%d"`/${TIMESTAMP}.fail_log
function log_status
{
status=$1
message=$2
if [ "$status" -ne 0 ]; then
echo "`date +\"%Y-%m-%d %H:%M:%S\"` [ERROR] $message [Status] $status : failed" | tee -a "${failed_logs}"
#echo "Please find the attached log file for more details"
exit 1
else
echo "`date +\"%Y-%m-%d %H:%M:%S\"` [INFO] $message [Status] $status : success" | tee -a "${success_logs}"
fi
}
日志不会附加到文件中。只创建文件。
如何让文件在HDFS
答案 0 :(得分:0)
日志不会附加到文件中。只有文件正在 创建
因为tee
是linux命令,不适用于存储在HDFS中的文件。
echo "`date +\"%Y-%m-%d %H:%M:%S\"` [ERROR] $message [Status] $status : failed" | hdfs dfs -appendToFile - ${failed_logs}
-
代替srcfile
是从stdin读取输入。