Corredor

ウェブ、プログラミングの勉強メモ。

log4javascript でファイルにログを書き込む独自の Appender を作る方法

log4javascript というライブラリがある。log4j に似たような使い方ができ、ログレベルを指定できたり、出力先をコンソールにしたり LocalStorage にしたりといったことができる。

大変便利なライブラリなのだが、log4javascript 標準ではファイルにログを書き出す Appender を提供してくれていない。というのも無理はないか。動作環境によってどのような方法でファイルに書き込みができるか、かなり微妙だからであろう。

今回は独自の Appender を作成するための参考なりそうなリンクをまとめてみようと思う。

File API を使用する方法

この Gist がそのまま動作する Appender 拡張クラスになっている。File API が使えれば File API で、File API が使えず ActiveX が使えれば FileSystemObject でファイルにログを書き込もうとしている。

ActiveX を使用する方法

こちらの StackOverflow の回答も、ActiveX を使用した Appender 拡張クラスのサンプルを紹介している。

Cordova-Plugin-File を使用する方法

こちらはそのものズバリなコードはないのだが、Cordova アプリにおいては Cordova-Plugin-File プラグインを使うことで、アプリ内に作ったローカルファイルにログを追記していくことができる。

プラグインをそのまま使うだけでは「ファイルの末尾に追記」ができないので、以下の記事で紹介されているように追記する場所をシークしてやる必要がある。fileWriter.seek(fileWriter.length) がミソ。

AngularJS 向けに Cordova プラグインのラッパーを提供している ngCordova も、seek() を利用した writeExistingFile() というメソッドを提供している。実コードを以下で確認できる。

AngularJS 向けと Angular4 向けのコードを作ったので以下を参考にされたし。

Log4J

Log4J