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==)

速攻でメモできる QuickNote リリースしました!

QuickNoteは動作が超軽量でサクサクかけるノートアプリです。一瞬の閃きを逃さずにノートを開き書き始めることができます。 アカウント登録も不要です。お試しあれ!

Excel操作をコマンドで! proBoarderExcel

Excelはマウスで操作するのが基本ですが、マウス操作に疲れてはいませんか? キーボードでExcel操作ができるようになるアプリです。オープンソースで無料です。

積み上げ! Daily Stack リリースしました!

Daily Stack は日々の積み上げを管理するToDoアプリです。過去の積み上げの振り返りだけでなく、ツイート機能もあります。 アカウント登録不要ですぐに使い始めることができます。

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱