Package Exports
- loki-logger-ts
- loki-logger-ts/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (loki-logger-ts) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
loki-logger-ts
Is a Loki Logger written in Typescript. It allows for the creation of a Grafana Loki Logging Client and easy parsing of messages and labels.
More information about Loki can be found here. https://grafana.com/loki
Installation
# NPM
npm i loki-logger-ts
# or
# YARN
yarn add loki-logger-ts
# or
#PNPM
pnpm i loki-logger-ts
Usage
No Authentication
import { LokiClient, LogError, LokiLabels } from "loki-logger-ts";
const HostData = {
url: "http://localhost:3100/api/prom/push"
};
const labels: LokiLabels = { source: "TestSource", job: "TestJob", host: "TestHost" };
async function main() {
const client = new LokiClient(HostData.url);
const msg = 'Test Message: No Authentication.';
await LogError(client, msg, labels);
client.getMetrics();
}
main();
Basic Authentication
import { LokiClient, LogError, LokiLabels } from "loki-logger-ts";
const HostData = {
url: "http://localhost:3100/api/prom/push",
username: "Test",
password: "Test"
};
const labels: LokiLabels = { source: "TestSource", job: "TestJob", host: "TestHost" };
async function main() {
const client = new LokiClient(HostData.url, {username: HostData.username, password: HostData.password});
const msg = 'Test Message: Basic Authentication.';
await LogError(client, msg, labels);
client.getMetrics();
}
main();
Secret Authentication
import { LokiClient, LogError, LokiLabels } from "loki-logger-ts";
const HostData = {
url: "http://localhost:3100/api/prom/push",
secret: "Test"
};
const labels: LokiLabels = { source: "TestSource", job: "TestJob", host: "TestHost" };
async function main() {
const client = new LokiClient(HostData.url, {secret: HostData.secret});
const msg = 'Test Message: Secret Authentication';
await LogError(client, msg, labels);
client.getMetrics();
}
main();
Message Types
Four types of formatted messages can be sent, these are:
- Error
import { LogError } from "loki-logger-ts";
- Warning
import { LogWarning } from "loki-logger-ts";
- Information
import { LogInfo } from "loki-logger-ts";
- Debug
import { LogDebug } from "loki-logger-ts";
Unformatted messages can also be sent by using:
import { Log } from "loki-logger-ts";
Ticker
When large amount of messages will be sent the ticker should be enabled so the client will update timestamps once a second. This prevents a new Date object being created for every message.
To enable this the following is used:
import { LokiClient } from "loki-logger-ts";
const HostData = {
url: "http://localhost:3100/api/prom/push",
username: "Test", //Only needed if basic auth is used
password: "Test" //Only needed if basic auth is used
secret: "Test" //Only need if secret auth is need. Eg. Grafana Cloud
};
const client = new LokiClient(HostData.url, {}, true);
//Basic auth example
const clientBasicAuth = new LokiClient(HostData.url, {username: HostData.username, password: HostData.password}, true);
//Secret auth example
const clientSecretAuth = new LokiClient(HostData.url, {secret: HostData.secret}, true);
Note
For more information and functions look at the comments in the source code.