- 発話依頼プログラム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 件のコメント:
コメントを投稿