2010-06-08 196 views
3

我想在我的shell脚本中设置一个简单的日志记录框架。为此,我想定义一个“登录”功能调用作为shell脚本错误日志记录

log "LEVEL" $message 

在该消息是该我以前重定向执行的命令的输出变量。我的麻烦是,我得到以下错误

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

有什么问题不是吗?

TIA

+1

错误?什么错误?我在这里看到没有错误。 (换句话说,如果您发布错误,它会有所帮助。) – 2010-06-08 19:01:42

+0

我无权访问脚本ATM并按内存进行操作。 我会尽快编辑我的文章 – Eddy 2010-06-09 05:56:22

回答

1

也许你想:

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

我最终这样做,并切换日志目的地的命令返回值。 谢谢 – Eddy 2010-06-09 05:54:47

+0

嗨,这就是我最终做的,与一个if开关一起检查命令返回值并适当地设置日志类别。 谢谢, 埃迪 – Eddy 2010-06-10 10:45:50

0

除了$(),你需要使用空格和分号与大括号(如果你甚至需要他们):

{ command; } 
1

你的问题与日志记录相关的问题并不完全清楚(看起来你的问题在于捕获要记录的文本,哪个glenn jackman巧妙地提出了解决方案),但只是如果您希望了解大多数Unix系统上的logger命令,请提供shell脚本写入系统日志的能力。它有各种层次和优先事项以及一切。非常便利。

+0

嗨,这将是一个很好的,但我没有访问syslog配置。 谢谢无论如何 eddy – Eddy 2010-06-09 05:49:08

3

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

+1

完美的工作伴侣。我一直在寻找这样简单易用的轻量级框架。做得好。 – user613114 2012-11-15 02:51:52

+0

不客气,我很高兴你觉得它有用 – jmoreno 2012-11-16 08:58:28