logologo
Úvod
Manuál
Vývoj
Pluginy
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Úvod
Manuál
Vývoj
Pluginy
API
logologo

Rychlý start

Přehled vývoje pluginů
Vytvoření prvního pluginu
Struktura adresářů projektu

Vývoj na straně serveru

Přehled
Plugin
Kolekce
Databázové operace
Správa zdrojů dat (DataSourceManager)
Správa zdrojů (ResourceManager)
Řízení přístupu (ACL)
Middleware
Cache
Události
Kontext požadavku
Migrace
Protokoly
Internacionalizace (I18n)
Příkazový řádek (Command)
Správa plánovaných úloh (CronJobManager)
Testování

Vývoj na straně klienta

Přehled
Plugin
Kontext
Router
Řízení přístupu (ACL)
Správa zdrojů dat (DataSourceManager)
Zdroje
Požadavky
Styly a motivy
Protokoly
Internacionalizace (I18n)
Testování

Ostatní

Průvodce aktualizací pluginů
Seznam jazyků
Správa závislostí
Sestavení
Previous PageMigrace
Next PageInternacionalizace (I18n)
TIP

Tento dokument byl přeložen umělou inteligencí. V případě nepřesností se prosím obraťte na anglickou verzi

#Logger

Logování v NocoBase je založeno na knihovně Winston. Ve výchozím nastavení NocoBase dělí záznamy na logy požadavků API, logy běhu systému a logy provádění SQL dotazů. Logy požadavků API a provádění SQL dotazů jsou generovány interně aplikací. Vývojáři pluginů obvykle potřebují zaznamenávat pouze logy běhu systému související s jejich pluginy.

Tento dokument popisuje, jak vytvářet a zaznamenávat logy při vývoji pluginů.

#Výchozí metody logování

NocoBase poskytuje metody pro logování běhu systému. Logy jsou zaznamenávány podle předdefinovaných polí a ukládány do určených souborů.

// Výchozí metoda logování
app.log.info("message");

// Použití v middleware
async function (ctx, next) {
  ctx.log.info("message");
}

// Použití v pluginech
class CustomPlugin extends Plugin {
  async load() {
    this.log.info("message");
  }
}

Všechny výše uvedené metody se řídí následujícím použitím:

Prvním parametrem je zpráva logu a druhým volitelný objekt metadata, který může obsahovat libovolné páry klíč-hodnota. Zde budou module, submodule a method extrahovány jako samostatná pole, zatímco zbývající pole budou umístěna do pole meta.

app.log.info('message', {
  module: 'module',
  submodule: 'submodule',
  method: 'method',
  key1: 'value1',
  key2: 'value2',
});
// => level=info timestamp=2023-12-27 10:30:23 message=message module=module submodule=submodule method=method meta={"key1": "value1", "key2": "value2"}

app.log.debug();
app.log.warn();
app.log.error();

#Výstup do jiných souborů

Pokud chcete použít výchozí metodu logování systému, ale nechcete výstup ukládat do výchozího souboru, můžete vytvořit vlastní instanci systémového loggeru pomocí createSystemLogger.

import { createSystemLogger } from '@nocobase/logger';

const logger = createSystemLogger({
  dirname: '/pathto/',
  filename: 'xxx',
  seperateError: true, // Zda se mají logy úrovně error ukládat samostatně do 'xxx_error.log'
});

#Vlastní logger

Pokud nechcete používat systémové metody logování a preferujete nativní metody Winstonu, můžete logy vytvářet následujícími způsoby.

#createLogger

import { createLogger } from '@nocobase/logger';

const logger = createLogger({
  // options
});

options rozšiřuje původní winston.LoggerOptions.

  • transports – Můžete použít přednastavené metody výstupu: 'console' | 'file' | 'dailyRotateFile'.
  • format – Můžete použít přednastavené formáty logování: 'logfmt' | 'json' | 'delimiter'.

#app.createLogger

Ve scénářích s více aplikacemi někdy chceme vlastní výstupní adresáře a soubory, které mohou být uloženy do adresáře pojmenovaného podle aktuální aplikace.

app.createLogger({
  dirname: '',
  filename: 'custom', // Výstup do /storage/logs/main/custom.log
});

#plugin.createLogger

Scénář použití a metoda jsou stejné jako u app.createLogger.

class CustomPlugin extends Plugin {
  async load() {
    const logger = this.createLogger({
      // Výstup do /storage/logs/main/custom-plugin/YYYY-MM-DD.log
      dirname: 'custom-plugin',
      filename: '%DATE%.log',
      transports: ['dailyRotateFile'],
    });
  }
}