Typescriptでlog4jsを使ってログ出力処理を簡単に実装する方法

どんなアプリケーションにもログ出力機能は必要ですが、個別に実装していくのは かなり面倒です。 なので、クラスを定義してどのアプリケーションにも簡単に実装できるようにしてみました。 言語はTypescriptで、NodeJSのモジュールを使用しています。

1. 使用するモジュール

使用している方が多い(と個人的に思っている)log4jsを使用します。

https://www.npmjs.com/package/log4js

log4jsは、DEBUGやINFO、FATALなど重要度に応じたログレベルを定義して出力できます。

npm install log4jsでインストールしてください。

2. ログ出力クラス

今回は簡単に、ログをファイルに出力する方式で実装しています。

    // logger.ts
    export interface ILogging {
        Logging(str:string):any
    }
    export class LoggingClass implements ILogging {
        Logging(logstr:string):any {
            const log4js = require('log4js');
            log4js.configure({
            appenders : {
                app : {type : 'file', filename : './log/app.log'}
            },
            categories : {
                default : {appenders : ['app'], level: 'debug'},
            }
            });
            const logger = log4js.getLogger('app');
            logger.debug(logstr)
        }
    }

Javascriptっぽくなっていますが、const log4js = require('log4js');でモジュールを呼び出しています。

log4js.configureで設定情報を定義しています。 categoriesでデフォルトのレベル(level)と、識別情報(appendars)を定義します。今回は、デフォルトレベルはdebugとしています。

識別情報appの出力方式はファイルとし、ファイルパスを定義します。

ここではLoggingという関数で定義しています。引数にlogstr(文字列型)を受け取り、debugレベルで書き込むというものです。

3. ログを出力する側のソースコード

    import {LoggingClass} from "./logger"
    const Logging = new LoggingClass()
    Logging.Logging(Application Initialized);

さきほどのログ出力クラスであるlogger.tsをインポートし、newでインスタンスLoggingを作成します。

Logging関数を実行し、ログを出力させています。

こうやって、機能をファイルごとに細分化してクラスにしておけば、他のシステムでも流用しやすくなりますよね。 ということで、logger.tsはこちらからダウンロード可能です。よければ使ってみてください。

logger.ts のダウンロードはこちらから。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

実践TypeScript【電子書籍】[ 吉井健文 ]
価格:3726円 (2019/7/23時点)

[

楽天で購入

](https://hb.afl.rakuten.co.jp/hgc/18648e8b.7d833591.18648e8c.ed1bab3c/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Frakutenkobo-ebooks%2F5456816fd8833397a6aa8b80647873ad%2F%3Fscid%3Daf_pc_bbtn&m=http%3A%2F%2Fm.rakuten.co.jp%2Frakutenkobo-ebooks%2Fi%2F18341447%2F%3Fscid%3Daf_pc_bbtn&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjEsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxfQ==)

コメント

タイトルとURLをコピーしました