eo-logger
v1.4.3
Published
* Isomorphic logger based on Elastic Common Schema * Elastic Common Schema typings out of the box
Downloads
26
Readme
eo-logger
- Isomorphic logger based on Elastic Common Schema
- Elastic Common Schema typings out of the box
How to install
yarn add eo-logger
Or
npm install eo-logger --save
How to use in browser
For start using required to create instance of class Logger
import { Logger } from 'eo-logger/dist/client/logger';
export const logger = new Logger();
Now you can import logger in any place of your application and use one of next methods
logger.error
- for errors
logger.debug
- for debug some information
logger.warning
- for warnings
logger.collectMetrics
- for collect performance metrics of your web application (this method available only for client logger)
By default logger transport just display ECS.Message
in console.
If you want to collect logs, you have to implement your own Transport
class.
Actually it is quite simple, look at example below:
import { ECS, Transport } from 'eo-logger';
import { Logger } from 'eo-logger/dist/client/logger';
class MyTransport extends Transport {
public send(message: ECS.Message): void {
fetch('/frontend-logs', {
method: 'post',
body: JSON.stringify(message),
});
}
}
export const logger = new Logger({
transport: new MyTransport(),
});
How to use with express
- Create api endpoint for collect logs
import * as express from 'express';
const app = express();
app.use(express.json());
app.post('/frontend-logs', (req, res) => {
return res.status(200).send();
});
- Add
@elastic/elasticsearch
yarn add @elastic/elasticsearch
- Create elasticsearch client and transport instance
import * as express from 'express';
import { Client } from '@elastic/elasticsearch';
import { Transport as ElkTransport } from 'eo-logger/dist/server/logger';
const app = express();
app.use(express.json());
app.post('/frontend-logs', (req, res) => {
elkTransport.send(req.body);
return res.status(200).send();
});
const elasticClient = new Client({ node: 'http://localhost:9200' });
const elkTransport = new ElkTransport({
client: elasticClient,
indexBase: 'frontend-logs',
maxQueueSize: 5,
});
Advanced
Logger contains 3 main components:
- Context
- Transport
- Formatter
Client utilities
getPerformanceMetrics
- function returns object with performance metrics of page speed loading
Server utilities
parseUserAgent
- function returns ECS.UserAgent
object with information based on user-agent
string
parseGeo
- function return ECS.Geo
object with information based on ip string