rglog

package
v0.0.0-...-841c510 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 7, 2015 License: Apache-2.0 Imports: 3 Imported by: 59

README

rglog

リアルグローブ式ロガー。

1. 使い方

プログラム実行のはじめのうちに標準動作を設定する。

import (
	...
	"github.com/realglobe-Inc/go-lib/rglog"
	"github.com/realglobe-Inc/go-lib/rglog/handler"
	"github.com/realglobe-Inc/go-lib/rglog/level"
	...
)

...

func main() {
	...
	// 使用する一番上の logger.Logger を取得する。
	// 引数には import パス等を使用する。
	log := rglog.Logger("a/b/c")
	defer rglog.Flush()
	// これより上には遡らせない。
	log.SetUseParent(false)
	// 全てのログを登録されている handler.Handler に渡させる。logger.Logger の初期レベルは基本的に level.OFF。
	log.SetLevel(level.ALL)

	// 標準エラー出力に level.INFO 以上を書き出させる。
	hndl := handler.NewConsoleHandler()
	hndl.SetLevel(level.INFO)
	log.AddHandler("console", hndl)

	// ファイル path に、最大 size バイト、最大 n ファイルで、デバッグ情報まで書き出させる。
	hndl = handler.NewRotateHandler(path, size, n)
	// handler.Handler の初期レベルは基本的に level.ALL。
	log.AddHandler("file", hndl)
	...
}

無設定だと "" の logger.Logger まで遡る。 "" の logger.Logger は level.INFO 以上を登録されている handler.Handler に渡し、渡された全てのログを標準エラー出力に書き出す handler.Handler が "console" という名前で登録されている。 つまり、無設定だと level.INFO 以上が標準エラー出力に書き出される。

使用したいところで、適当な Logger を取得して使う。

import (
	...
	"github.com/realglobe-Inc/go-lib/rglog"
	...
)

...

func Function() {
	...
	rglog.Logger("a/b/c/d").Info("Log message")
	...
}

何度も使うなら初期化時に取得しておくと良い。

var log = rglog.Logger("a/b/c/d")

...

func Function() {
	...
	log.Info("Log message")
	...
}

標準とは異なる動作を追加したいときは、好きな handler.Handler を log.AddHandler したり、log.SetLevel したりで。 標準動作をさせないなら、log.SetUseParent(false)。

ログメッセージの生成が重いなら、IsLoggable で handler.Handler にログが渡されない場合には飛ばすこともできる。

func Function() {
	...
	if log.IsLoggable(level.INFO) {
		// 1 つ以上の Handler.handler にログが渡される場合、ここに至る。
		log.Log(level.INFO, generateLogMessage())
	}
	...
}

2. API

GoDoc

3. ライセンス

Apache License, Version 2.0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Flush

func Flush()

TODO 手動で Flush しなくちゃならないのは面倒。終処理にフックしたい。

func Logger

func Logger(name string) logger.Logger

各パッケージの init で 1 回だけ呼ぶくらいを想定。

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL