JSPM

loki-logger-ts

1.0.2
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 18
    • Score
      100M100P100Q25484F

    Is a Grafana Loki Logger written in Typescript. It allows for the creation of a Grafana Loki Logging Client and easy parsing of messages and labels.

    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.