Webサービス開発におけるトレースログの大切さ

  • このエントリーをはてなブックマークに追加

Webサービスを開発する際にきちんとトレースログ(操作ログ)は取っていますでしょうか?

Windowsアプリケーションの開発などではトレースログを取るのは常識ですが、実際に今までWebシステムなどに関わってきて、トレースログをきちんと取っているサービスやシステムは正直少ないように思います。
(取る慣習があまりないようにも感じます。)

もちろん取っているところ、サーバ容量の問題などでわざと取っていないところもあるでしょう。

不特定多数のユーザーが利用するサービスの場合、不具合があって問い合わせがあったとしても、閲覧環境など状況を細かく質問するのは非常に困難です。

自社内で再現しないような不具合も操作ログを取っておけば解決の糸口になります。
バグが発生した時によくある「状況が分からないとなんとも解決のしようがない!」というエンジニアの悩みもトレースログがあれば解決が早いですね。

もう一度トレースログの大切さについて考えてみました。


社内バグチェックの際に便利

少人数で開発している会社などですと、バグチェックをするのがディレクターであったりすることが多く、バグの発生した状況やバグ内容をエンジニアにうまいこと伝えられないことがあったります。

そういった場合にトレースログでどのユーザーが何をして何のエラーを吐いたのか分かれば大体のことは察しが付くわけです。

テスト会社にお願いしたり、テストに慣れたテスターがいるような環境で開発を行っていれば別ですが、当社のような少人数で制作しているような制作会社ではトレースログによってバグさえ発見してもらえれば修正できるので重宝するわけです。

 

ユーザーに閲覧環境や操作を確認するのは困難なので

ユーザーから受けた不具合で特定の環境下や予測していない操作などで再現がなかなかに難しい不具合があります。

ユーザーにどういう環境で、とか操作を詳しくといったことをヒアリングするのは現実的ではありません。
これは社内バグチェックの際と同様ですが、リリースしたサービスこそ、こちらの予測のつかない操作によってバグが発覚することは多々あります。

報告されたバグに対して、テスト環境などで再現テストを何度も行うのであれば、操作内容とエラー内容をログに吐き出していれば解決は早いでしょう。

 

よく使われる機能など、次の改善にもつながる

トレースログはバグなどの不具合の原因解明だけではなく、サービスの改善にも役立ちます。

サーバのアクセスログを見ればどのページにアクセスが集中しているのか、ということは分かりますが、操作までは分かりません。
PVとか投稿されたデータ数や時間を総合的に見ていけば大体のことは察しが付きますが、トレースログをとっておいた方がより明確に分かりやすいです。

例えば最近ではいちいち画面遷移しないで処理されるようなサービスも多いのでユーザーがどのボタン、どの機能をよく使っているか、逆に使われていないか、など正確なデータを取るためにもトレースログを取った方が良いでしょう。

 

ログを取る際に気をつけたいこと。

吐き出す内容

ログを取る際にリリース前やテスト環境でのデバッグ時のログとリリース用のログは吐き出す内容を分けておいた方がよいでしょう。テスト段階では細かくログを取っていたとしても、リリース時には要所要所を取っておいた方が、不必要にサーバの容量を取られません。

保存サイクル

これもサーバ容量の問題ですが、保存するサイクル、たとえば一週間分など決めておく必要があります。
この設定を忘れて無限に取るとログのせいで容量が圧迫されてしまい本末転倒です。

保存の仕方

これもポイントなのですが、ひとつのファイルに複数ユーザーの動向をすべて吐き出すとログを解析する時間がとられます。例えば会員制のWebサービスなどですと会員毎にログファイルを保存するなど、後で解析するのに効率が良い方法で保存するほうが良いです。

========

これらのトレースログにプラスしてエラー発生時にメールアラートが飛ぶようにしておけば安心ですね。

早くリリースすることを目標にしているとなかなか忘れがちですが、運用に入ってから役に立ちますので、社内でもトレースログを徹底していこうと思います。

執筆者:高本

株式会社8bit 取締役の高本です。 社内のWebサービス企画、プログラミングや、売上・請求管理にいたるまで幅広く担当しております。

関連記事

プログラミング

SharePoint REST APIを使用してリストの情報を取得し、headerにナビを作る

SharePointで作成したリストの情報をREST APIを使用して取得してみましょう。 今回は、APIで取得した情報を、headerにリンクとして差し込んでみます。サイト全体共通のナビでも、リストを使用すると、一か所で管理できるので便利です。 目次1 前提条件2 1.REST APIで情報を取得2.1 REST APIのURL2.2 データを取得する処理3 2.取得した情報をheaderに表示 前提条件 SharePoint Online モダンUI カスタムJSが使用で […]

WordPress

WordPressで権限やユーザーごとに管理画面のサイドメニュー表示を切り分ける

デフォルトだといろいろな項目が表示されているWordPressの管理画面のサイドメニュー。 慣れていない人にはわかりづらいですよね。 また、権限によってデフォルトで非表示にしてくれたりもしますが、この部分は見せたくないな…ということも多いと思います。 今回はWordPressで権限やユーザーごとにサイドメニューの表示を変更する方法をご紹介します。 目次1 権限の種類について2 function.phpに記述する2.1 サイドメニューの非表示用のコード2.2 権限ごとに振り分け […]

プログラミング

jQuery+PHPで大容量ファイルを分割アップロードするお話

ファイルのアップロードを行う際に注意しないといけないのが「アップロード容量」と「タイムアウト」です。 どちらもサーバーの設定に関わるところでレンタルサーバーでは対処しきれないところもあり、大容量にするとそれだけアップロードに時間がかかりタイムアウトが発生しやすくなります。 そこでフロント側で分割してファイルをアップし、バックエンド側で受け取った後に結合するようにするとよいでしょう 注意すべき点として通常のPOSTでの送信ではないため、あらかじめそこら辺を考慮した処理が必要とな […]

株式会社8bit (エイトビット)

東京都目黒区でWebサイト制作、Webシステム開発などを行っております。
コーポレートサイトやWebサービスの企画・提案を得意としており、自社での経験を元にアイデアをカタチにするお手伝いをさせていただいております。

Web制作に関するご相談はお気軽にどうぞ

弊社に制作をご依頼いただく際の費用感をご確認いただける、
見積りシミュレーションをご用意いたしました。