npm package: @openobserve/pino-openobserve
Description: Pino transport for Openobserve
Author: OpenObserve
Latest version: 1.0.0

# @openobserve/pino-openobserve

This is a transport for the Pino logging library that sends logs to an Openobserve server in batches. 

## Prerequisites

This package requires Node.js version 18.0.0 or later and pino v7+

## Installation

You can install this package using npm or Yarn.

With npm:

```bash
npm install @openobserve/pino-openobserve
```

With Yarn:

```bash
yarn add @openobserve/pino-openobserve
```

## Options

The transport accepts an options object with the following properties:

| Property | Required | Default | Description |
| -------- | -------- | ------- | ----------- |
| url | Yes | - | The URL of your Openobserve server. |
| organization | Yes | - | The name of your organization. |
| streamName | Yes | - | The name of the stream to which logs should be sent. |
| auth | Yes | `{ username: "", password: "" }` | An object with `username` and `password` properties for authenticating with the Openobserve server |
| batchSize | No | `100` | The number of logs to include in each batch. |
| timeThreshold | No | `300000` (5 mins) | The interval, in milliseconds, at which logs should be sent. |
| silentSuccess | No | false | A boolean indicating whether to suppress successful operation messages. |
| silentError | No | false | A boolean indicating whether to suppress error messages. |

## Usage

You can use the transport by passing the package name as target, or by importing it directly.

### Using package name (Recommended)
```javascript
// using require
const pino = require('pino');

// using import
import pino from 'pino';

const logger = pino({
  level: 'info',
  transport: {
    target: '@openobserve/pino-openobserve',
    options: {
      url: 'https://your-openobserve-server.com',
      organization: 'your-organization',
      streamName: 'your-stream',
      auth: {
        username: 'your-username',
        password: 'your-password',
      },
    },
  },
});

logger.info('Hello, world!');
logger.info({ lang: 'js', code: 'Node.js' }, 'Logging with JSON');
```

### Direct import

The way you import the `pino` and `@openobserve/pino-openobserve` packages depends on whether you're using `import` or `require`. 

```javascript
// using require
const pino = require('pino');
const OpenobserveTransport = require('@openobserve/pino-openobserve').OpenobserveTransport;

// using import
import pino from 'pino';
import { OpenobserveTransport } from '@openobserve/pino-openobserve';

const logger = pino({
  level: 'info',
  transport: {
    target: OpenobserveTransport,
    options: {
      url: 'https://your-openobserve-server.com',
      organization: 'your-organization',
      streamName: 'your-stream',
      auth: {
        username: 'your-username',
        password: 'your-password',
      },
    },
  },
});

logger.info('Hello, world!');
logger.info({ lang: 'js', code: 'Node.js' }, 'Logging with JSON');
```

In the above examples, the second `logger.info` call logs a JSON object containing the properties `lang` and `code`, along with the message 'Logging with JSON'. This is a common way to include structured data in your logs when using Pino.

## License

This package is licensed under the Apache License, Version 2.0. See the `LICENSE` file for more details.