使用“logger”登录单独的日志文件

时间:2014-04-17 07:43:28

标签: linux bash shell logging raspberry-pi

我正在运行一个小脚本来自动启动我的覆盆子pi上的node.js-service。 出于这个原因,我在退出0之前从/etc/rc.local的末尾调用它。

脚本正在启动,没问题。

现在,我的脚本看起来像这样:

#!/bin/bash
echo "Node.js starting..."
LOGFILE=log_`date +%b%d%H%M%S`.log
sudo /opt/node/bin/node /home/pi/www/js/script.js > /home/pi/node_logs/$LOGFILE

但我想改用logger。我试了一下却失败了。 任何人都可以向我解释如何“绑定”logger只将node.js的输出记录到这个日志文件中?我想我真的误解了logger的工作方式,因为我真的不是Linux-pro: - /

1 个答案:

答案 0 :(得分:3)

logger只登录到系统日志 - 如果你真的想以这种方式做事,那么你必须先编辑你的syslog.conf文件并添加如下内容:

# node.js logging
local5.*                                                /home/pi/logs/nodejs.log

local5是预定义的工具,请确保它未在您的syslog conf中的其他位置使用。现在您需要重新启动syslog服务:

/etc/init.d/syslog stop; /etc/init.d/syslog start

现在您可以使用logger来记录您的消息:

sudo /opt/node/bin/node /home/pi/www/js/script.js | logger -p local5.info

要为每个日期创建不同的日志文件,您必须使用logrotate之类的内容。

另一种(更好的)解决方案是在记录之前为每一行添加时间戳:

while read msg; do
    echo -n "[$(date +"%d/%m/%Y %H:%M:%S")] " >> "$LOGFILE"
    echo "$msg" >> "$LOGFILE"
done < <(sudo /opt/node/bin/node /home/pi/www/js/script.js)