gelf-pro
- Pustaka klien Graylog2 untuk Node.js.
Mengirim log ke server Graylog2 dalam format GELF (Graylog Extended Log Format).
Fitur:
"dependencies": {
"gelf-pro": "~1.3" // see the "releases" section
}
npm install gelf-pro
( SEMUA versi node.js didukung [0.x hingga 2x.x] :)
Perpustakaan bergantung pada: lodash#~4.17
var log = require ( 'gelf-pro' ) ;
Peringatan
Untuk memastikan perilaku yang konsisten, tidak ada adaptor yang menggunakan kembali koneksi soket . Penggunaan kembali koneksi soket dapat menyebabkan kebocoran sumber daya, kompleksitas dalam manajemen negara, masalah konkurensi, risiko keamanan, dan mungkin tidak selalu memberikan manfaat kinerja yang signifikan. Seringkali lebih mudah dan aman untuk membuat koneksi baru sesuai kebutuhan daripada menggunakan kembali koneksi yang sudah ada, sehingga memastikan pemanfaatan sumber daya yang lebih baik dan mengurangi potensi komplikasi dalam komunikasi jaringan.
Ada beberapa (1, 2) varian yang tersedia untuk Anda pinjam dan buat adaptor baru. Lihat bagian terkait.
GELF UDP
GELF TCP
(dengan Null frame delimiter
)GELF TCP
(dengan Null frame delimiter
dan Enable TLS
) Catatan
Dalam jaringan yang kurang lebih stabil (yang kemungkinan besar), saya akan merekomendasikan penggunaan adaptor udp
. Saya juga akan merekomendasikannya untuk proyek dengan beban rata-rata hingga tinggi. Untuk informasi sensitif, disarankan menggunakan adaptor tcp-tls
.
// simple
log . setConfig ( { adapterOptions : { host : 'my.glog-server.net' } } ) ;
// advanced
log . setConfig ( {
fields : { facility : "example" , owner : "Tom (a cat)" } , // optional; default fields for all messages
filter : [ ] , // optional; filters to discard a message
transform : [ ] , // optional; transformers for a message
broadcast : [ ] , // optional; listeners of a message
levels : { } , // optional; default: see the levels section below
aliases : { } , // optional; default: see the aliases section below
adapterName : 'udp' , // optional; currently supported "udp", "tcp" and "tcp-tls"; default: udp
adapterOptions : { // this object is passed to the adapter.connect() method
// common
host : '127.0.0.1' , // optional; default: 127.0.0.1
port : 12201 , // optional; default: 12201
// ... and so on
// tcp adapter example
family : 4 , // tcp only; optional; version of IP stack; default: 4
timeout : 1000 , // tcp only; optional; default: 10000 (10 sec)
// udp adapter example
protocol : 'udp4' , // udp only; optional; udp adapter: udp4, udp6; default: udp4
// tcp-tls adapter example
key : fs . readFileSync ( 'client-key.pem' ) , // tcp-tls only; optional; only if using the client certificate authentication
cert : fs . readFileSync ( 'client-cert.pem' ) , // tcp-tls only; optional; only if using the client certificate authentication
ca : [ fs . readFileSync ( 'server-cert.pem' ) ] // tcp-tls only; optional; only for the self-signed certificate
}
} ) ;
log.setConfig
menggabungkan data. Oleh karena itu, Anda dapat meneleponnya berkali-kali.
var extra = { tom : 'cat' , jerry : 'mouse' , others : { spike : 1 , tyke : 1 } } ;
log . info ( "Hello world" , extra , function ( err , bytesSent ) { } ) ;
log . info ( "Hello world" , function ( err , bytesSent ) { } ) ;
log . info ( "Hello world" , extra ) ;
log . info ( "Hello world" ) ;
log . error ( 'Oooops.' , new Error ( 'An error message' ) ) ;
// ^-- extra becomes: {short_message: 'Oooops.', _error_message: 'An error message', _error_stack: Error's stack}
log . error ( new Error ( 'An error message' ) ) ;
// ^-- extra becomes: {short_message: 'An error message', full_message: Error's stack}
log . message ( new Error ( 'An error message' ) , 3 ) ; // same as previous
Jika extra
adalah objek biasa, perpustakaan akan mengubahnya menjadi format yang dapat dibaca. Nilai lain dikonversi menjadi string. Format kunci yang dapat diterima adalah: ^[w-]$
log . info (
'a new msg goes here' ,
{ me : { fname : 'k' , lname : 'k' , bdate : new Date ( 2000 , 01 , 01 ) } }
) ;
// ^-- extra becomes: {_me_fname: 'k', _me_lname: 'k', _me_bdate: 'Tue Feb 01 2000 00:00:00 GMT+0100 (CET)'}
Terkadang kita harus membuang pesan yang tidak sesuai dengan lingkungan saat ini. NOT
dimungkinkan untuk mengubah data.
log . setConfig ( {
filter : [
function ( message ) { // rejects a "debug" message
return ( message . level < 7 ) ;
}
]
} ) ;
transforming
terjadi setelah filtering
. Dimungkinkan untuk mengubah data.
log . setConfig ( {
transform : [
function ( message ) { // unwind an error
if ( _ . isError ( message . error ) ) {
message . error = { message : message . error . message , stack : message . error . stack } ;
}
return message ;
}
]
} ) ;
broadcasting
terjadi setelah transforming
. NOT
dimungkinkan untuk mengubah data.
log . setConfig ( {
broadcast : [
function ( message ) { // broadcasting to console
console [ message . level > 3 ? 'log' : 'error' ] ( message . short_message , message ) ;
}
]
} ) ;
Bawaan:
{emergency: 0, alert: 1, critical: 2, error: 3, warning: 4, notice: 5, info: 6, debug: 7}
Contoh: log.emergency(...)
, log.critical(...)
, dll.
Contoh khusus: {alert: 0, notice: 1, ...}
Anda dapat memaksa menggunakan adaptor khusus dengan mengatur adapter
tepat setelah inisialisasi. Tanda tangannya mungkin ditemukan di sini.
var log = require ( 'gelf-pro' ) ;
var myFancyAdapter = require ( '...' ) ;
log . adapter = myFancyAdapter ;
// (!) adapterName and adapterOptions will be ignored
Bawaan: {log: 'debug', warn: 'warning'}
Contoh: log.log(...) -> log.debug(...)
, log.warn(...) -> log.warning(...)
, dll.
Contoh khusus: {red: 'alert', yellow: 'notice', ...}
npm install
npm test
[sudo] docker build --no-cache -t node-gelf-pro .
[sudo] docker run -ti --rm -v " ${PWD} :/opt/app " -w " /opt/app " node-gelf-pro
MIT