- 発話依頼プログラムpill-reminder.jsのログ
- 発話PUSHプログラムexample.jsのログ
- GASのWebAPIのログ
発話依頼プログラムpill-reminder.jsのログ
発話依頼プログラムはNodejsで作られた~/pill-reminder/pill-reminder.jsで、~/pill-reminder/pill-reminder.logにログを出力する。
このログは、下記のシェル~/pill-reminder/pill-reminder.shでバックアップが取られたのち、中身がクリアされ、~/pill-reminder/pill-reminder.jsが起動されるようになっている。
#!/bin/sh cp /home/mtanaka/pill-reminder/pill-reminder.log /home/mtanaka/pill-reminder/log/pill-reminder_`date "+%Y%m%d"`.log echo '' > /home/mtanaka/pill-reminder/pill-reminder.log /usr/local/bin/node /home/mtanaka/pill-reminder/pill-reminder.js >> /home/mtanaka/pill-reminder/pill-reminder.log &
リスト1.シェルスクリプト~/pill-reminder/pill-reminder.sh
このシェルは/etc/rc.localによって起動時に、また毎日午前1時にcrontabで起動されるように設定されている。
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Speak Push Service (pill-reminder system) forever start /home/mtanaka/pill-reminder/example.js # start pill-reminder su - mtanaka -c '/usr/local/bin/node /home/mtanaka/pill-reminder/pill-reminder.js >> /home/mtanaka/pill-reminder/pill-reminder.log &' # ngrok tunneling ssh su - mtanaka -c '/home/mtanaka/ngrok tcp --region ap 22' exit 0
リスト2./etc/rc.local
0 1 * * * /home/mtanaka/pill-reminder/pill-reminder.sh
リスト3.crontab
ログのバックアップファイルは
~/pill-reminder/log/pill-reminder_YYYYMMDD.logという名前で作成される。
発話PUSHプログラムexample.jsのログ
発話PUSHプログラムexample.jsもNodejsで作成されたプログラムであるが、Nodejs foreverを使って永続的に実行させている。このプログラムはOS起動時にリスト2に示す/etc/rc.localで起動するにしている。下記の/root/log-backup.shを毎日午前1時にcrontabを使って起動することでログの取得と交換を行っている。
#!/bin/sh
log_file1=`forever list | grep root | /usr/bin/awk '{print $8}'`
log_file2=$(/usr/bin/printf $log_file1 | /bin/sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g")
cp $log_file2 /home/mtanaka/pill-reminder/log/example_`date "+%Y%m%d"`.log
echo '' > $log_file2
リスト4./root/log-backup.sh
0 1 * * * /root/log-backup.shリスト5.crontab (root)
ログのバックアップファイルは
~/pill-reminder/log/example_YYYYMMDD.logという名前で作成される。
GASのWebAPIのログ
GASのWebAPIのログはGoogleドライブのマイドライブ内にあるdebugというGoogleドキュメントへ出力される。このログ内容をYYMMDD.logという名前のテキストファイルに保存した後にログをクリアするGASが以下のログ変更処理というGASである。
/**
* ログ変更
*
*/
function logChange() {
var doc = DocumentApp.openById('1cWo.............................DM9E');
var text= doc.getBody().getText();
var fileName = formatDate(new Date(), 'YYYYMMDD') + '.log'
createFile(fileName, text);
doc.getBody().clear();
}
/**
* ファイル書き出し
* @param {string} fileName ファイル名
* @param {string} content ファイルの内容
*/
function createFile(fileName, content) {
var folder = DriveApp.getFolderById('1sY.....................eXTX');
var contentType = 'text/plain';
var charset = 'utf-8';
// Blob を作成する
var blob = Utilities.newBlob('', contentType, fileName)
.setDataFromString(content, charset);
// ファイルに保存
folder.createFile(blob);
}
/**
* 日付をフォーマットする
* @param {Date} date 日付
* @param {String} [format] フォーマット
* @return {String} フォーマット済み日付
*/
function formatDate(date, format) {
if (!format) format = 'YYYY-MM-DD hh:mm:ss.SSS';
format = format.replace(/YYYY/g, date.getFullYear());
format = format.replace(/MM/g, ('0' + (date.getMonth() + 1)).slice(-2));
format = format.replace(/DD/g, ('0' + date.getDate()).slice(-2));
format = format.replace(/hh/g, ('0' + date.getHours()).slice(-2));
format = format.replace(/mm/g, ('0' + date.getMinutes()).slice(-2));
format = format.replace(/ss/g, ('0' + date.getSeconds()).slice(-2));
if (format.match(/S/g)) {
var milliSeconds = ('00' + date.getMilliseconds()).slice(-3);
var length = format.match(/S/g).length;
for (var i = 0; i < length; i++) format = format.replace(/S/, milliSeconds.substring(i, i + 1));
}
return format;
};
リスト5.ログのバックアップとクリアを行うGAS「ログ変更処理」
バックアップされたログは[マイドライブ]内の[ゼミ2018]→[実証実験]→[第2クール]→[log]の中に保存される。
なお、このGASはトリガーによって毎日午前0~1時の間に実行されるように設定されている。
0 件のコメント:
コメントを投稿