markuss23-logger-pub
v1.0.9
Published
Jednoduchá utility pro separované logování mimo consoli. Využívá původních funkcí console.info, console.warn a console.error.
Downloads
2
Readme
Logger
instalace:
pro instalaci můžeme použít příkaz:npm install logger
pokud není výchozí registr npm na stanici nastaven na npmjs.kzcr.eu a balíčky jsou stahovány z původního registru použijeme:npm install logger --registry: npmjs.kzcr.eu
Použití:
import loggeru
import logger from "logger"
po importu v App.jsx / App.tsx
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App.tsx'
import './index.css'
import logger from "logger";
logger.initialize();
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<App />
</React.StrictMode>,
)
Po inicializaci logger okamžitě začíná vnímat všechnny metody Console a využívat je pro zapisování logů do pole logger.logs
.
zapsané logy jsou dostupné pomocí logger.logs
- pole logů.
případně jinak pokud byla definována metoda onDataSave();
Dostupný Config
logger lze nastavit objektem config, který má následující attributy:
| název | typ | popis | |-------|-----|-------| | minSeverity | number | minimální úroveň závažnosti | | observeTime | number | čas kontroly délky pole logů | | onDataSend | ()=>void | funkce vykonaná pro odesílání logů | | onDataSave | ()=>void | funkce vykonaná při ukládání logů | | checkOnCount | number | počet logů, při jehož překročení bude pokus o odeslání |
může vypadat například takto
const loggerConfig = {
minSeverity: 2, // minimální console.info()
observeTime: 1000, //každou vteřinu
onDataSend: ()=>fetch(someUrl, {credentials:"include"});
onDataSave: ()=>localStorage.setItem('logs', logger.logs);
}
configuraci poté předáme inicializační funkci v useEffect
useEffect(()=>{
logger.initialize(loggerConfig);
},[])
Attributy třídy Logger
| název | viditelnost | typ | popis |
|-------|-------------|-----|-------|
| logId | private | number
| počítadlo, z kterého je vypočítáno ID logu a převedono na string |
| minSeverity | public | number
| číslo minimální závažnosti, od které se logy zapisují |
| logs | public | Array<Log>
| pole zapsaných logů |
| observer | public | boolean
| zda je spuštěno sledování logů |
| observeTime | public | number
| čas který každých x milisekund provede kontrolu nových logů |
| checkOnCount | public | number
| počet logů, po kterém se logger pokusí logy odeslat |
Metody třídy Logger
| název | viditelnost | typ | popis |
|-------|-------------|-----|-------|
| onLogWrite | public | (id: number, message: string, severity: LogSeverity)=>void
| funkce zavolaná pro uložení logu. Slouží k přepisu původního zahrnutí do pole logu. Parametry funkce jsou id, message a severity, lze je využít v definované funkci |
| onDataSave | public | ()=>void
| funkce zavolaná pro uložení logů |
| onDataSend | public | ()=>void
| funkce zavolaná pro odeslání logů |
| startObserver | public | ()=>void
| zapnutí hlídání pole logů |
| stopObserver | public | ()=>void
| vypnutí hlídání pole logů |
Použití třídy Logger
třídu Logger lze samozřejmě importovat pomocí import { Logger } from "logger"
a lze jí vytvořit vlastní logiku, pokud by nevyhovovalo použití s přepisem metod console, které exportuje instance která je defaultně exportovaná z balíčku logger
.
V tomto případě je nutné vytvořit si vlastní instanci třídy a tu poté exportovat např vytvoříme soubor MyLogger.tsx.
//MyLogger.tsx
import { Logger } from "logger"
const myLogger = new Logger();
export default myLogger;
Pokud budeme chtít rozšířit třídu a definovat vlastní metody pro logování:
//MyLogger.tsx
class MyLogger extends Logger {
myAwesomeMethod:()=>{
return this.logs[0].id
}
/**
* @Override
*/
write(id: string, message: number){
// do something...
}
}
const logger = new MyLogger();
export default logger;
další importy
lze importovat:
- Log - interface pro objekt logu
- LogSeverity - enum severit
- LogType - přežitek z původního loggeru
- LoggerConfig - interface pro objekt konfigurace loggeru
DEPRECATED
- LogType