プログラミング奮闘記

難しいと評判!初心者がN予備校でプログラミングを学んだ感想と備忘録!
No.25:ログ

N予備校 プログラミングコース 第25回

あなたは2019年の目標って立てましたか?
どんな目標を立てたか覚えていますか?

私は2018年末に2019年の目標を立てました。
その一つにプログラミングを学び仕事として使えるようにすることをあげました。
そして、思い立ったが吉日と「N予備校のプログラミングコース」を申し込みました。

そして受講と同時に自身の振替と、これから始めようと考えている人の参考になればとブログを書き始めました。
今回ブログの移設にともない、再度そのブログを読み返しながら、今思うことを加えて記載していきたいと思います。

また私が受講したのは【2018年度】で、現在公開されている【2019年度】との違いについても書いていきたいと思います。

このブログは、初心者が学びながら書いているため、間違っている場合があります。
分かり次第修正していくつもりです。

そのあたりも含め楽しんでいただければと思います。 

最後に進めていてわからなかったところや気になったところをまとめています。

プログラミング入門 webアプリコース 第25回

前回は、Webサービスを提供するうえで必要なHTTPサーバーを利用したプログラミングについて学びました。
今回は、ログについて学びます。
ログとは、サーバーに何かトラブルがあった際の情報の記録の事です。

  • 今回の内容まとめ(第3章 12)
    ・ログについて

  • 今回の目標
    サーバーでトラブルがあった際などの情報を記録したログを取得するプログラムを作成する。 

  • 今回新しく扱っているコマンド等
    ・info
    ・error
    ・warn

ログについて

ログ(log)とは、起こった出来事について記録したデータの事です。データは時系列で記録され、このログを取ることをロギングと言います。
ログには、誰がいつアクセスしたか(アクセスログ)や、いつどんなエラーが生じたか(エラーログ)などが記録されます。
この「アクセスログ」「エラーログ」についてのプログラムを設計します。 
今回は、info関数、warn関数、error関数を使用します。

アクセスログを出力する

サーバーにアクセスがあった際に残るログ(アクセスログ)を出力するプログラムを実装します。
info関数を用いて、利用者からのアクセスのあった時間と利用者のIPアドレスをコンソール上に表示するように設定します。

info

普段から残しておきたい情報に使います。

今回は、これらを以下のように用います。

console.info(‘[‘ + new Date() + ‘] Requested by ‘ + req.connection.remoteAddress);

console. info
このコードで普段から残しておきたい情報のログをコンソール上に表示します。
処理内容は、console.logと同じです。

そして、今回表示する内容を以下で設定しています。

new Date()
現在の日付を取得します。

req.connection.remoteAddress
リクエスト(サーバーの利用者)が送られたIP情報を取得します。

以上のコードで、『[現在の日付] Requested by IP情報』の形で表示されます。

エラーログを出力

エラーログは、何かサーバーでトラブルがあった際の記録で、トラブルの解決方法を発見するために非常に大切な情報です。
今回はerrorイベントとclientErrorイベントを使用してコードを作成します。

  • errorイベントは、HTTPサーバーにエラーが発生した際(ステータスコード500番台)に呼び出されます。

  • clientErrorイベントは、クライアントにおけるエラー(処理失敗)が発生した際(ステータスコード400番台)に呼び出されます。

今回は、error関数を用いてエラーが発生した日時と発生内容を表示します。また、エラーログにはwarn関数を用いることもあります。

error

直ちに対応が必要な情報に使います。

warn

問題となる可能性がある情報に使います。

.on(‘error’, (e) => {
console.error(‘[‘ + new Date() + ‘] Server Error’, e);

errorイベントが起こった際は、サーバーエラーが発生したことをコンソール上に表示します。
エラーが発生した時間と、どのようなエラーが発生したのかを表示します。

.on(‘clientError’, (e) => {
console.error(‘[‘ + new Date() + ‘] Client Error’, e);
});
これにより、clientErrorイベントが起こった際は、クライアントエラーが発生したこととしてコンソール上に表示します。
先ほどと同様、エラーが発生した時間と、どのようなエラーが発生したのかを表示します。
 

また、エラーログをファイルに残す場合は以下のコマンドで実行することが出来ます。

node ○○.js 2>&1 | tee -a ××.log
○○.jsのファイルを実行した際の、標準エラー出力(2)と標準出力(1)を××.logファイルに出力します。尚、teeコマンドは、コンソールとファイルの両方に出力するコマンドです。


以上のように、今回はサーバーでトラブルがあった際などの情報を記録したログを取得するプログラムを作成しました。
次回以降はこのログを使って、掲示板への投稿内容を保存するプログラムを作成します。

ABOUT ME
GoodAmbition
オンライン塾経営者(大阪大学工学部出身の元開発技術者) 自身も家庭教師や塾講師として働きつつ、後輩の育成やオンライン塾を経営しています。 私自身も約10年にわたり家庭教師や塾講師として100人以上の受験生と向き合ってきました。 色々な学生、保護者の方とかかわる中でよく質問される内容や、受験に必要な内容について書いています。 独学で頑張っている人たちへ勉強計画や悩み相談なども受け付けていますので気軽にお問い合わせください。 就職活動や資格の勉強などで悩んでいる方もご連絡ください。 教育・就活、書籍、食べ歩きに関するお話がメインです。 最近取り組んでいること プログラミング、筋トレ、マラソン、ライティングスキル向上etc. 苦手なことを克服しようと頑張っています。