npm package: @hexstudiosar/reqlogger
Description: Middleware for request logging in a server.
Author: HexStudios
Latest version: 0.6.1

# Logger Middleware

Middleware for request logging in a server.

## Installation

```shell
npm install @hexstudiosar/reqlogger
```

## Usage

```javascript
const express = require('express');
const logger = require('@hexstudiosar/reqlogger');

const app = express();

// Add the request logging middleware
app.use(logger());

// Rest of your application configuration and routes
// ...

// Start the server
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});
```

## Options

**The middleware accepts an option for the log style. The available options are:**

```javascript
// 'inline': Inline log that displays all details in a single line.
app.use(logger('inline'));
/*
  Output:
  [15:30:45] GET /home 200 15ms 1750
*/
```

```javascript
// 'minified': Minimal log that displays only essential request details.
app.use(logger('minified'));
/*
  Output:
  GET /home 200 15ms
*/
```

```javascript
// 'agent': Log focused on agent information (IP, User Agent, Referer).
app.use(logger('agent'));
/* 
  Output:
  [15:30:45] | AGENT LOG
    IP: ::1
    User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36
    Referer: Unknown
*/
```

```javascript
// 'error': Inline log that displays only error requests details.
app.use(logger('error'));
/*
  Output:
  [15:30:45] GET /home6 404 9ms 143
*/
```

```javascript
// 'default': Detailed log with all request details.
app.use(logger('default'));
/* 
  Output:
  [15:30:45] | REQUEST LOG
    Timestamp: 15:30:45
    Method: GET
    URL: /home
    Status: 200
    Time: 15ms
    IP: ::1
    Size: 1750
    User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36
    Referer: Unknown
*/
```

*If no logging style is specified, the default style will be used.*

## Custom option

**By using this option, you can set a custom text to your log.**

```javascript
// 'custom': Use a custom style for the log.
app.use(logger('custom', {
  style: ":timestamp :method :status" // Custom text
}));
/* 
  Output:
  15:30:45 GET 200
*/
```

*Use ; to set a specific color, use : to set a specific option.*

**Disponible customisation:**

- **Options**:
  - **:timestamp** (Timestamp of request: HH:MM:SS).
  - **:method** (Request method: GET, POST, PUT, DELETE, PATCH).
  - **:url** (Request url: /route).
  - **:status** (Request status code: 200, 304, 404, 500, etc).
  - **:time** (Request total time: MSms).
  - **:ip** (Request ip: XXX.XXX.XXX.XXX).
  - **:size** (Request content length).
  - **:useragent** (User agent browser).
  - **:referer** (Referer URL).

- **Colors**:
  - **;reset** (Reset color and markdown to default).
  - **;bright** (Bright text, can be reset by using ;reset).
  - **;underscore** (Underscore text, can be reset by using ;reset).
  - **;yellow** (Yellow text).
  - **;green** (Green text).
  - **;blue** (Blue text).
  - **;red** (Red text).
  - **;cyan** (Cyan text).

## License

This project is licensed under the MIT License.