【问题标题】:shell scripting error loggingshell 脚本错误记录
【发布时间】:2010-06-08 16:50:01
【问题描述】:

我正在尝试在我的 shell 脚本中设置一个简单的日志框架。为此,我想定义一个可调用的“日志”函数

log "LEVEL" $message

其中消息是一个变量,我之前已将执行命令的输出重定向到该变量。我的麻烦是我收到以下错误

{message=command 2>&3 1>&3 3>&-} >&3
log "INFO" $message

有什么不对吗?

TIA

【问题讨论】:

  • 错误?什么错误?我在这里看不到任何错误。 (换句话说,如果您发布错误会有所帮助。)
  • 我无法访问脚本 ATM 并且正在记忆中进行。我会尽快编辑我的帖子

标签: shell logging scripting descriptor


【解决方案1】:

我为我的 shell 脚本开发了一个简单的multi-level logger,你可以看看使用,灵感,或者任何你想要的。

【讨论】:

  • 完美的工作伙伴。我一直在寻找这样易于使用和轻量级的框架。干得好。
【解决方案2】:

也许你想要:

message=$( command 2>&1 )
log INFO "$message"

【讨论】:

  • 我最终这样做并根据命令返回值切换日志目标。谢谢
  • 嗨,这就是我最终所做的,以及一个 if 开关来检查命令返回值并适当地设置日志类别。谢谢,艾迪
【解决方案3】:

尚不完全清楚您的问题是否与日志记录有关(看起来您的麻烦在于捕获要记录的文本,格伦杰克曼已经巧妙地提出了解决方案),但以防万一,您可能希望了解logger 命令可以在大多数 Unix 系统上找到——它为 shell 脚本提供了写入系统日志的能力。它有不同的级别和优先级以及一切。非常方便。

【讨论】:

  • 您好,这很好,但我无权访问系统日志配置。无论如何感谢涡流
【解决方案4】:

除了$(),您还需要在花括号中使用空格和分号(如果您甚至需要它们):

{ command; }

【讨论】:

    猜你喜欢
    • 2020-12-07
    • 2010-10-15
    • 2014-07-08
    • 1970-01-01
    • 2022-07-06
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    相关资源
    最近更新 更多