Log 4 jsログ収集
4565 ワード
インストール(terminal)
logger.js簡易コンテンツ
logger.js具体的な内容の整理
options構成
options: levels:All->Trace->Debug->Info->Warn->Error->Fatal->Mark->Off(オフ) appenders(appendersObject):ログイベントが何らかの形式でシーケンス化された出力 categories(categoriesObject):ログ・イベントをグループ化するためのラベル pm 2,pm 2 InstanceVar,disableClustering:PM 2に関する構成 appendersObject { key : object} key: { type: types, (required) layout: layoutObject }
types:出力タイプ categoryFilter console(コンソールに大量の出力を書き込むと、アプリケーションに大量のメモリが消費されます.この問題が発生した場合はstdout appenderに切り替えてみてください.) dateFile (filename, pattern('.yyyy-MM-dd-hh'), compress, encoding) file (filename, maxLogSize, backups, compress, encoding) file Sync(compressはサポートされていません) logLevelFilter multiFile(マルチファイル、base、extension(接尾辞)、timeout、property:'categoryName'(ファイル名区分用)) multiprocess(マルチプロセスmode(master|worker)、appender(master)、loggerPort、loggerHost) recording stderr(標準エラーフロー) stdout(標準出力ストリーム) tcp (port, host) tcp-server
LayoutObject:出力フォーマット【layoutもカスタマイズ可能】 basic:時間、レベル、カテゴリ、情報[2017-03-30 07:57:00.113][ERROR]cheese-Cheese is too ripe! cored:basicより色が多いTRACE-'青いblue'|DEBUG-'青いcyan'|INFO-'緑のgreen'|WARN-'黄色yellow'|ERROR-'赤いred'|FATAL-'マゼンタ' pattern (pattern(patternString), tokens(tokenObject))
patternString に持ち込む. に持ち込む
tokenObject
CategoriesObject:default"out":{appenders:[[out],level:[info],default:{appenders:[[file],level:[info]}
カスタムlayout
LogEventオブジェクト
npm install log4js
logger.js簡易コンテンツ
var log4js = require('log4js');
log4js.configure( options ) ;
var logger = log4js.getLogger([category]);
module.exports = logger;
logger.js具体的な内容の整理
const log4js = require( "log4js" );
const options = {
appenders: {
out: {
type: "stdout",
layout: {
type: "pattern",
pattern: "%[[%x{reqid}] [%d{ISO8601_WITH_TZ_OFFSET}] [%x{ip}] [%p] [%x{user}]%] %m%n",
tokens: {
user( logEvent ) {
if ( logEvent.context.user ) {
return logEvent.context.user;
}
return "";
}
}
}
},
file: {
type: "file",
filename: "logs/access.log",
maxLogSize: 10485760,
layout: {
type: "messagePassThrough"
},
compress: true
}
},
categories: {
"out": {
appenders: [ "out" ],
level: "info"
},
default: {
appenders: [ "file" ],
level: "info"
}
}
}
log4js.configure( options );
var logger = log4js.getLogger( "out" );
module.exports = logger;
options構成
options:
types:出力タイプ
LayoutObject:出力フォーマット【layoutもカスタマイズ可能】
patternString
%r
time in toLocaleTimeString format %p
ログ・レベル%c
ログ種別%h
ホスト名%m
ログ情報%d
ログ日付(デフォルト2017-06-01 08:32:56.283)%d{yyyy/MM/dd-hh.mm.ss}
%%
% - for when you want a literal %
in your output %n
改行%z
process id (from process.pid
) %x{}
tokensの変数を%X{}
logger.addContext('user', 'charlie'); userを%[
start a coloured block (colour will be taken from the log level, similar to colouredLayout
) %]
end a coloured block tokenObject
tokens: {
reqid( logEvent ) {
if ( logEvent.context.reqid ) {
return logEvent.context.reqid;
}
return "";
}
CategoriesObject:default"out":{appenders:[[out],level:[info],default:{appenders:[[file],level:[info]}
カスタムlayout
log4js.addLayout('json', function(config) {
return function(logEvent) { return JSON.stringify(logEvent); }
});
LogEventオブジェクト
LoggingEvent {
startTime: 2018-12-03T05:57:50.033Z,
categoryName: '[Logger]',
data: [ ' ' ],
level: Level { level: 40000, levelStr: 'ERROR', colour: 'red' },
context: {},
pid: 2262 } {}
}