写一个确切的异常到日志文件

时间:2018-03-26 11:57:00

标签: linux shell unix terminal sh

我有一个 shell脚本文件,命令行是:

mkdir test

当我执行shell脚本文件时,会创建测试文件夹。 第二次执行相同的shell脚本文件并抛出错误“已经存在测试文件夹”。

需要

在这种情况下,我需要创建一个日志文件并在日志文件中写出确切的异常。

3 个答案:

答案 0 :(得分:2)

如下所示: -

log_buffer=$(mkdir test 2>&1)
#you can put any command under $()
if [ $? -ne 0 ]; then
   echo "$log_buffer" >> log.txt
fi

首先,2>&1在这里是什么?通常,如果mkdir test失败,输出将被O / S重定向到standard error。在这种情况下,它不会存储在log_buffer变量中。要存储输出,我们需要将标准错误重定向到standard ouput2>&1完全相同

现在这里的$?是什么。执行shell命令后,命令的返回状态存储在$?变量中。如果命令在Unix中成功执行,则$?中存储的值为0,如果失败,则基于该程序的退出状态将为其他数字/值。希望这会有所帮助。

答案 1 :(得分:0)

首先,为了创建一个日志文件:

import logging
logging.basicConfig(filename='example.log',level=logging.DEBUG)

你可以这样做:

try:
    # your logic goes here
except Exception e:
    logging.exception("Full traceback of your error")

它会将所有回溯放入日志文件中,以便您能够探索错误

答案 2 :(得分:0)

尝试将此确切错误记录到日志文件

#!/bin/sh

temp_file=$(mktemp)

mkdir test 2>$temp_file
if [ $? -ne 0 ]; then
        echo $(cat $temp_file) >> log.txt
        rm -f $temp_file
fi

mktemp命令在/ tmp目录中创建一个临时文件。 / tmp目录文件不是磁盘文件,它们在重新启动后不存在。