体重133キロからのプログラミング

体重はちょっと減って今125キロです。

g-notice ログを出力する

おはようございます。
早いもので、前回の記事から2ヶ月も空いてしまいました・・・。
年度末&年度始めということで結構忙しかったんですよね。
そしGWは11連休し、寝て起きて過ごしただけでした。

さて、最近またg-noticeの開発に着手していて、今回はnode.jsでのファイルへの書き込みなどを実装してみました。

ログ出力する

大抵のアプリケーションってログ出力してくれますよね。
正しく動いていることや、どこでつまづいたのかの目安になってめちゃ便利だなと感じたわけです。
なので、動きを真似て作ってみました。

const fs = require('fs');
const moment = require('moment');

class logger {

  info(msg) {
    // prefix
    const pref = '[INFO]'
    const log = this.createLog(pref, msg);
    // 書き込み
    fs.appendFile("log.log", log.log, (err) => {
      if (err) throw err;
      console.log(log.console);
    });
  }

  error(msg) {
    // prefix
    const pref = '[ERROR]'
    const log = this.createLog(pref, msg);
    // 書き込み
    fs.appendFile("log.log", log, (err) => {
      if (err) throw err;
      console.log(log);
    });
  }

  createLog(pref, msg) {
    // date
    const date = moment(new Date()).format('YYYY-MM-DD HH:mm:ss');
    const logStr = `${pref}${date}:${msg}\n`;
    const consoleLog = `${pref}${date}:${msg}`;

    const log = {
      log: logStr,
      console: consoleLog
    }
    return log;
  }

}

module.exports = logger;

f:id:poinorou:20210524221606p:plain 他クラスからはlog.info('HOGE')みたいに呼び出します。
ログはコンソールだけでなく、ファイルにも書き込んでメンテナンスの際に活用するんですよね。
作ってて思いましたが、絶対こういうライブラリあるわ。

おわりに

実はしれっとPDFのパース⇨DB書き込みまでは済んでるんですが、解説する気になれないレベルでごちゃついているので、明日の僕に任せるとします。
f:id:poinorou:20210524221342p:plain