简体   繁体   English

如何为每个命令的 bash 脚本日志添加时间戳并排除 set、echo、log?

[英]How to add a timestamp to bash script log for every command and exclude set, echo, log?

How to add a timestamp to bash script log for every command (exclude set, echo, log) ?如何为每个命令(排除 set、echo、log)向 bash 脚本日志添加时间戳?

Im running a backup script and want to log all commands with timestamp:我正在运行一个备份脚本并想用时间戳记录所有命令:

 #./svnbackup.sh 2&>1 | timestamp_xtrace > ./svn-backup.log 2>&1

this is my function, which doesnt work:这是我的功能,它不起作用:

 timestamp_xtrace() {
   while IFS= read -r line; do
     if [[ "$line" =~ "^+ set" ]] && [[ "$line" =~ "^+ echo" ]] && [[ "$line" =~ "^+ log" ]]; then
         echo "$(date) $line";
     fi
   done
 }

i want to exclude some commands (set, echo , log...) but it doesnt work.. does someone have a hint to solve my problem?我想排除一些命令(set、echo、log...)但它不起作用..有人有解决我的问题的提示吗?

I found a working solution:我找到了一个可行的解决方案:

timestamp_xtrace() {
   while IFS= read -r line; do
     if [[ "$line" != "+ set"* ]] && [[ "$line" != "+ echo"* ]] && [[ "$line" != "+ log"* ]]; then
       echo "$(date) $line";
     fi
   done
}

i changed the regex ( =~ "^ "+ echo" ) to ( != "+ echo"* ) so the test is matches the right lines :我将正则表达式( =~ "^ "+ echo" )更改为( != "+ echo"* ),因此测试与正确的行匹配:

# cat << EOF | timestamp_xtrace
+ somecmd
+ echo "hello world!"
hello world!
+ svnadmin -args
EOF

Output:输出:

Wed Sep 30 09:12:43 CEST 2015 + somecmd
Wed Sep 30 09:12:43 CEST 2015 hello world!
Wed Sep 30 09:12:43 CEST 2015 + svnadmin -args

This bash function should do the job:这个 bash 函数应该可以完成这项工作:

timestamp_xtrace() { 
   while IFS= read -r line; do
      [[ "$line" =~ ^[[:blank:]]*(set|echo|log) ]] && echo "$(date):: $line"
   done
}

^[[:blank:]]*(set|echo|log) will match set OR echo OR log at start of line optionally preceded by space or tab. ^[[:blank:]]*(set|echo|log)将匹配set OR echo OR log在行首,可选地以空格或制表符开头。

Testing:测试:

cat << EOF | timestamp_xtrace
foo bar
log something testing
echo and more
abc xyz
EOF

Output:输出:

Tue Sep 29 10:40:44 EDT 2015:: log something testing
Tue Sep 29 10:40:44 EDT 2015:: echo and more

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM