winston-azure-blob
Version:
NEW winston transport for azure blob storage
88 lines (71 loc) • 5.22 kB
Markdown
# `winston-azure-blob`
> An Azure Blob transport for winston3
[](https://www.npmjs.com/package/winston-azure-blob)
## Highlights
- :heavy_check_mark: **Simple API** - Easy to use API with sensible defaults
- :large_blue_circle: **Typescript ready**
- :closed_lock_with_key: **SAS support** - Use a Shared Access Signature or key/name auth
- :wrench: **Highly configurable** - Lots of options for customization in specific use cases
- :cloud: **Modern** - Uses the new [`@azure/storage-blob`](https://www.npmjs.com/package/@azure/storage-blob) SDK
## Installation
```bash
yarn install winston
yarn install winston-azure-blob
```
## Usage
```typescript
import * as winston from "winston";
import { winstonAzureBlob, extensions } from "winston-azure-blob";
const logger = winston.createLogger({
format: winston.format.combine(
winston.format.timestamp(),
winston.format.splat(),
winston.format.json()
),
transports: [
winstonAzureBlob({
account: {
name: "Azure storage account sub domain ([A-Za-z0-9])",
key: "The long Azure storage secret key"
// or
host: 'The host address',
sasToken: 'The Shared Access Signature token'
// or
connectionString: 'A connection string for the storage account'
},
blobName: "The name of the blob",
bufferLogSize : 1,
containerName: "A container name",
eol : "\n",
extension : extensions.LOG,
level: "info",
rotatePeriod : "YYYY-MM-DD",
syncTimeout : 0,
})
]
});
logger.warn("Hello!");
```
## API
| Parameter | Data Type | Description | Default | Type/Options |
| --------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------- | ----------------- | ------------------------------------------------ |
| `account` | Object | Azure storage account credentials. Can provide either `name` & `key`, `host` & `sasToken`, or a `connectionString`. | | See below |
| `blobName` | String | The name of the blob to log. | | |
| `bufferLogSize` | Integer | A minimum number of logs before syncing the blob. | -1 | |
| `containerName` | String | The container which will contain the logs. | | |
| `eol` | String | The character appended to each log. | "\n" | |
| `extension` | String | The file extension for the log file. | No file extension | `.log` via `extensions` or string file extension |
| `headers` | Array<String> | Column headers for csv log files. Headers, when provided, are applied to newly created csv blobs. | | |
| `level` | String | Log level of messages for the transport. | `info` | |
| `rotatePeriod` | String (formatted) | A moment format for blob name generation. Ex: `YYYY-MM-DD` will generate `blobName.2000.01.01`. | "" | |
| `syncTimeout` | Integer (milliseconds) | The maximum time between two sync calls. Set to zero for realtime logging. | 0 | |
### Account Credentials Options:
| Field | Data Type | Description |
| ------------------ | --------- | ---------------------------------------------------- |
| `name` | String | Name of the Windows Azure storage account to use. |
| `key` | String | Access key to authenticate into the storage account. |
| `host` | String | HTTP address of the storage account. |
| `sasToken` | String | Shared access signature of the storage account. |
| `connectionString` | String | A connection string for the storage account. |
## Inspo & Credit
<https://github.com/sdnetwork/winston3-azureblob-transport>