An open API service indexing awesome lists of open source software.

https://github.com/mxz96102/react-logview

A component display highlight log blazing fast
https://github.com/mxz96102/react-logview

Last synced: 12 months ago
JSON representation

A component display highlight log blazing fast

Awesome Lists containing this project

README

          

# react-logview

> Using virtual window and lowlight to render logs without innerHTML and fast.

## Install

```bash
npm install --save react-logvew
```

## Get Started

### Basic Usage

You can use log view easily by import LogView component

```tsx
import React from 'react';
import { LogView } from 'react-logview';

const generateRandomLogs = (sum) => {
let i = sum;
let str = ''
while (sum--) {
str += `${Math.random() > 0.5 ? '[WARN]' : '[ERROR]'}: ${Math.random().toString(16).slice(-5).repeat(10)}\n`
}
return str
}

export default () => ;
```

### Massive Mount of Logs

Event with million lines of logs, still not block browser

```tsx
import React, {useState} from 'react';
import { LogView } from 'react-logview';

const generateRandomLogs = (sum) => {
let i = sum;
let str = ''
while (sum--) {
str += `${Math.random() > 0.5 ? '[WARN]' : '[ERROR]'}: ${Math.random().toString(16).slice(-5).repeat(10)}\n`
}
return str
}

export default () => {
const [content, setContent] = useState('Press Load to load');

return <> setContent(generateRandomLogs(1200000))}>Load>};
```

### Themes

We support light(github style) and dark(darcula style) by using theme;

```tsx
import React from 'react';
import { LogView } from 'react-logview';

const generateRandomLogs = (sum) => {
let i = sum;
let str = ''
while (sum--) {
str += `${Math.random() > 0.5 ? '[WARN]' : '[ERROR]'}: ${Math.random().toString(16).slice(-5).repeat(10)}\n`
}
return str
}

export default () => <>
Light Theme

Dark Theme

>;
```

### Keyword Search

By using keyword props, you can find the lines contains your words.

```tsx
import React, { useState } from 'react';
import { LogView } from 'react-logview';

const generateRandomLogs = (sum) => {
let i = sum;
let str = ''
while (sum--) {
str += `${Math.random() > 0.5 ? '[WARN]' : '[ERROR]'}: ${Math.random().toString(16).slice(-5).repeat(10)}\n`
}
return str
}

export default () => {
const [keyword, setKeyword] = useState('ERROR')
console.log(keyword)

return <>
setKeyword(value)} />

>};
```

### Props

| Props | Type | Description |
|----------------|-------------------|---------------------------------------------------------|
| content | string | (required) content of logs |
| width | number | width |
| height | number | height |
| fontSize | number | font size of log |
| theme | "light" \| "dark" | theme now only support light and dark |
| language | string | language of logs default set to prolog |
| focusLine | number | on change of focus line, view will scroll to lineNumber |
| keywords | string | filter the line that contains keywords |
| style | Style | styles of view |
| listRef | MutableRef | ref of container dom |
| onScrollBottom | () => void | call back on scroll to bottom |
| revert | boolean | revert logs rank |

## Develop

Install dependencies,

```bash
$ npm i
```

Start the dev server,

```bash
$ npm start
```

Build documentation,

```bash
$ npm run docs:build
```

Build the lib

```bash
$ npm run build
```