LoginSignup
4
3

More than 5 years have passed since last update.

JavaScriptで作るクライアントでは、ローカルのテキストファイルにログが残せないことが判りました

Last updated at Posted at 2015-06-20

クライアントサイドJavaScriptでログをテキストファイルに残す方法にはどんな方法があるのか調べてみました。結果、クライアントからサーバにログをPOST(しサーバ側でテキストファイルに保存)する方法が一般的であることが判りました。

クライアント自身にログを残す方法を優先的に探したのですが、既存のロギング・フレームワークにそんな方法は見当たりませんでした。やはり、という感触です。

クライアント

ロギングはlog4javascriptを使いました。ログを保存するサーバは、localhost:3000を指定しました。今回はクライアント装置と同じ装置をサーバに見立てています。

main.html
<!DOCTYPE html>
<html>
    <head>
        <title>Example</title>
        <script type="text/javascript" src="js/log4javascript.js"></script>
        <script>
            //<![CDATA[
            var log = log4javascript.getLogger();

            var ajaxAppender = new log4javascript.AjaxAppender("http://localhost:3000/");
            ajaxAppender.setThreshold(log4javascript.Level.ERROR);
            log.addAppender(ajaxAppender);

            function log4jsTest() {
                log.trace("トレース・メッセージです");
                log.debug("デバッグ・メッセージです");
                log.info("情報メッセージです");
                log.warn("警告メッセージです");
                log.error("エラー・メッセージです");
                log.fatal("致命的故障メッセージです");
            }
            //]]>
        </script>
    </head>
    <body>
        <input type="button" value="log4js Test" onclick="log4jsTest()"/>
    </body>
</html>

サーバ

サーバサイドはJavaScriptでなくてもいいのですが、今回はNode.jsで書いてみました。テキストファイルへの書き出し処理は省略しています。

server.js
var Hapi = require('hapi');

var server = new Hapi.Server();
server.connection({ port: 3000 });

server.route({
    method: ['PUT', 'POST'],
    path: '/',
    handler: function (request, reply) {
        console.log(request.payload.timestamp);
        console.log(request.payload.logger);
        console.log(request.payload.level);
        console.log(request.payload.message);
        console.log(request.payload.url);

        reply('I did something!');
    }
});

server.start(function () {
    console.log('Server running at:', server.info.uri);
});
~                     
4
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3