Skip to content

Commit 2b63f57

Browse files
i18n(fr): add experimental-flags/logger.mdx (#13830)
Co-authored-by: Yan <61414485+yanthomasdev@users.noreply.github.com>
1 parent 44dd131 commit 2b63f57

1 file changed

Lines changed: 328 additions & 0 deletions

File tree

  • src/content/docs/fr/reference/experimental-flags
Lines changed: 328 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,328 @@
1+
---
2+
title: Journaliseur expérimental
3+
sidebar:
4+
label: Journaliseur
5+
i18nReady: true
6+
---
7+
8+
import Since from '~/components/Since.astro';
9+
10+
<p>
11+
12+
**Type :** `object`<br />
13+
**Par défaut :** `undefined`<br />
14+
<Since v="6.2.0" />
15+
</p>
16+
17+
Active un journaliseur expérimental et personnalisable qui peut être contrôlé par l'utilisateur.
18+
19+
Lorsque fourni, l'utilisateur a un contrôle total sur les journaux émis par Astro. De plus, la fonctionnalité est livrée avec quelques journaliseurs intégrés qui peuvent être utilisés via les nouveaux gestionnaires de journalisation (`logHandlers`).
20+
21+
L'exemple suivant active le journaliseur JSON intégré, avec une sortie formatée :
22+
23+
```js title="astro.config.mjs" {5} ins="logHandlers"
24+
import { defineConfig, logHandlers } from 'astro/config';
25+
26+
export default defineConfig({
27+
experimental: {
28+
logger: logHandlers.json({ pretty: true })
29+
}
30+
});
31+
```
32+
33+
Vous pouvez également activer la journalisation JSON pour les commandes `dev`, `build` et `sync` à l'aide de l'option `--experimentalJson` :
34+
35+
```shell
36+
astro dev --experimentalJson
37+
astro sync --experimentalJson
38+
astro build --experimentalJson
39+
```
40+
41+
42+
## Journaliseurs intégrés
43+
44+
Cette fonctionnalité inclut trois enregistreurs intégrés.
45+
46+
### `logHandlers.json`
47+
48+
Un journaliseur qui produit des messages au format JSON. Un journal ressemblerait à ceci :
49+
```json
50+
{ "message": "<le message>", "label": "routeur", "level": "info", "time": "<timestamp UNIX>" }
51+
```
52+
53+
#### Options du journaliseur JSON
54+
55+
<p>
56+
**Type :** `{ pretty: boolean; level: AstroLoggerLevel; }`<br />
57+
**Par défaut :** `{ pretty: false, level: 'info' }`
58+
<Since v="6.2.0" />
59+
</p>
60+
61+
Le journaliseur `json` accepte les options suivantes :
62+
63+
- `pretty` : lorsque la valeur est `true`, le journal JSON est affiché sur plusieurs lignes. La valeur par défaut est `false`.
64+
- `level` : le [niveau](#niveau-de-journalisation) des journaux qui doivent être affichés.
65+
66+
```js title="astro.config.mjs" {5} ins="json"
67+
import { defineConfig, logHandlers } from 'astro/config';
68+
69+
export default defineConfig({
70+
experimental: {
71+
logger: logHandlers.json({ pretty: true })
72+
}
73+
});
74+
```
75+
76+
### `logHandlers.console`
77+
78+
Un journaliseur qui affiche les messages en utilisant la `console` comme destination. En fonction du niveau du message, il utilise différents canaux :
79+
80+
- Les messages d'erreur (`error`) sont affichés en utilisant `console.error()`.
81+
- Les messages d'avertissement (`warn`) sont affichés en utilisant `console.warn()`.
82+
- Les messages d'information (`info`) sont affichés en utilisant `console.info()`.
83+
84+
#### Options du journaliseur console
85+
86+
<p>
87+
**Type :** `{ level: AstroLoggerLevel }`<br />
88+
**Par défaut :** `{ level: 'info' }`
89+
<Since v="6.2.0" />
90+
</p>
91+
92+
Le journaliseur `console` accepte les options suivantes :
93+
94+
- `level` : le [niveau](#niveau-de-journalisation) des journaux qui doivent être affichés.
95+
96+
```js title="astro.config.mjs" {5} ins="console"
97+
import { defineConfig, logHandlers } from 'astro/config';
98+
99+
export default defineConfig({
100+
experimental: {
101+
logger: logHandlers.console({ level: 'warn' })
102+
}
103+
});
104+
```
105+
106+
### `logHandlers.node`
107+
108+
Un journaliseur qui affiche les messages dans [`process.stdout`](https://nodejs.org/api/process.html#processstdout) et [`process.stderr`](https://nodejs.org/api/process.html#processstderr). Les messages de niveau `error` sont affichés dans `stderr`, tandis que les autres sont affichés dans `stdout`.
109+
110+
C'est le journaliseur par défaut d'Astro.
111+
112+
#### Options du journaliseur Node
113+
114+
<p>
115+
**Type :** `{ level: AstroLoggerLevel }`<br />
116+
**Par défaut :** `{ level: 'info' }`
117+
<Since v="6.2.0" />
118+
</p>
119+
120+
Le journaliseur `node` accepte les options suivantes :
121+
122+
- `level` : le [niveau](#niveau-de-journalisation) des journaux qui doivent être affichés.
123+
124+
```js title="astro.config.mjs" {5} ins="node"
125+
import { defineConfig, logHandlers } from 'astro/config';
126+
127+
export default defineConfig({
128+
experimental: {
129+
logger: logHandlers.node({ level: 'warn' })
130+
}
131+
});
132+
```
133+
134+
### `logHandlers.compose`
135+
136+
Une fonction particulière qui permet de configurer plusieurs journaliseurs dans un ordre arbitraire. Le même message est diffusé à tous les journaliseurs.
137+
138+
L'exemple suivant compose le journaliseur console et le journaliseur JSON en utilisant le niveau de journalisation par défaut :
139+
140+
```js title="astro.config.mjs"
141+
import { defineConfig, logHandlers } from 'astro/config';
142+
143+
export default defineConfig({
144+
experimental: {
145+
logger: logHandlers.compose(
146+
logHandlers.console(),
147+
logHandlers.json()
148+
)
149+
}
150+
});
151+
```
152+
153+
## Journaliseurs personnalisés
154+
155+
Vous pouvez créer un journaliseur personnalisé en fournissant la configuration correcte au paramètre `logger`. Il accepte un objet avec un point d'entrée (`entrypoint`) obligatoire, le module depuis lequel le journaliseur est exporté, et une configuration facultative à transmettre au journaliseur. La configuration doit être sérialisable.
156+
157+
La fonction du journaliseur doit être exportée en tant que `default`.
158+
159+
Lorsque vous définissez un journaliseur personnalisé, vous êtes responsable de tous les journaux, même ceux émis par Astro.
160+
161+
L'exemple suivant définit un journaliseur personnalisé exporté par le package `@org/journaliseur-personnalise` et n'acceptant qu'un seul paramètre pour configurer le niveau (`level`) de journalisation :
162+
163+
```js title="astro.config.mjs"
164+
import { defineConfig } from 'astro/config';
165+
166+
export default defineConfig({
167+
experimental: {
168+
logger: {
169+
entrypoint: "@org/journaliseur-personnalise",
170+
config: {
171+
level: "warn"
172+
}
173+
}
174+
}
175+
});
176+
```
177+
178+
L'exemple suivant implémente un journaliseur minimal renvoyant un [objet `AstroLoggerDestination`](#astrologgerdestination) avec la fonction `write()` requise :
179+
180+
```ts title="@org/journaliseur-personnalise/index.ts"
181+
import type {
182+
AstroLoggerLevel,
183+
AstroLoggerDestination,
184+
AstroLoggerMessage
185+
} from "astro";
186+
import { matchesLevel } from "astro/logger";
187+
188+
type LoggerOptions = {
189+
level: AstroLoggerLevel
190+
}
191+
192+
function orgLogger(options: LoggerOptions = {}): AstroLoggerDestination {
193+
const { level = 'info' } = options;
194+
return {
195+
write(message: AstroLoggerMessage) {
196+
// Utilisez cet utilitaire pour comprendre si le message doit être affiché
197+
if (matchesLevel(message.level, level)) {
198+
// journalisez le message quelque part en tenant compte du niveau
199+
}
200+
}
201+
}
202+
}
203+
204+
export default orgLogger;
205+
```
206+
207+
## Environnement d'exécution
208+
209+
L'[objet de contexte](/fr/reference/api-reference/#lobjet-de-contexte) expose désormais un objet `logger` contenant les fonctions suivantes :
210+
211+
- `error()`, qui émet un message avec le niveau `error`.
212+
- `warn()`, qui émet un message avec le niveau `warn`.
213+
- `info()`, qui émet un message avec le niveau `info`.
214+
215+
```astro
216+
---
217+
Astro.logger.error("Ceci est une erreur");
218+
Astro.logger.warn("Ceci est un avertissement");
219+
Astro.logger.info("Ceci est une information");
220+
---
221+
```
222+
223+
## Niveau de journalisation
224+
225+
Un niveau est un score interne et arbitraire attribué à chaque message. Lorsqu'un journaliseur est configuré avec un certain niveau, seuls les messages ayant un niveau égal ou supérieur sont affichés.
226+
227+
Il existe trois niveaux, du score le plus élevé au score le plus bas :
228+
1. `error`
229+
2. `warn`
230+
3. `info`
231+
232+
L'exemple suivant configure le journaliseur JSON pour n'afficher que les messages ayant le niveau `warn` ou supérieur :
233+
234+
```js title="astro.config.mjs" {5} ins='level: "warn"'
235+
import { defineConfig, logHandlers } from 'astro/config';
236+
237+
export default defineConfig({
238+
experimental: {
239+
logger: logHandlers.json({ level: "warn" })
240+
}
241+
});
242+
```
243+
244+
Le paquet `astro/logger` expose une fonction utilitaire [`matchesLevel()`](#matcheslevel) pour vérifier le niveau de journalisation. Cela peut être utile lors de la [création d'un journaliseur personnalisé](#journaliseurs-personnalisés).
245+
246+
```js
247+
import { matchesLevel } from "astro/logger";
248+
249+
matchesLevel("error", "info");
250+
```
251+
252+
253+
## Référence des types
254+
255+
Les types suivants peuvent être importés depuis le module `astro`.
256+
257+
### `AstroLoggerDestination`
258+
259+
Ceci est l'interface que les journaliseurs personnalisés doivent implémenter.
260+
261+
#### `AstroLoggerDestination.write()`
262+
263+
<p>
264+
265+
**Type :** `(message: AstroLoggerMessage) => void`
266+
</p>
267+
268+
Une méthode obligatoire appelée pour chaque journal et acceptant un objet [`AstroLoggerMessage`](#astrologgermessage).
269+
270+
#### `AstroLoggerDestination.flush()`
271+
272+
<p>
273+
274+
**Type :** `() => Promise<void> | void`
275+
</p>
276+
277+
Une fonction facultative appelée à la fin de chaque requête. Cela est utile pour les journaliseurs avancés qui doivent vider les messages de journal tout en maintenant la connexion avec la destination active.
278+
279+
#### `AstroLoggerDestination.close()`
280+
281+
<p>
282+
283+
**Type :** `() => Promise<void> | void`
284+
</p>
285+
286+
Une fonction facultative appelée avant l'arrêt d'un serveur. Cette fonction est généralement appelée par des adaptateurs tels que `@astrojs/node`.
287+
288+
### `AstroLoggerLevel`
289+
290+
Le niveau du message. Variantes disponibles :
291+
- `'debug'`
292+
- `'info'`
293+
- `'warn'`
294+
- `'error'`
295+
- `'silent'`
296+
297+
### `AstroLoggerMessage`
298+
299+
<p>
300+
301+
**Type :** `{ label: string | null; level: AstroLoggerLevel; message: string; newLine: boolean; }`
302+
</p>
303+
L'objet entrant de la fonction [`AstroLoggerDestination.write()`](#astrologgerdestinationwrite) :
304+
- `message` : le message à journaliser.
305+
- `level` : le niveau du message.
306+
- `label` : une étiquette arbitraire attribuée au message du journal.
307+
- `newLine` : indique si ce message doit ajouter une nouvelle ligne à la fin.
308+
309+
## Référence des APIs
310+
311+
Les APIs suivantes peuvent être importées depuis le module `astro/logger`.
312+
313+
### `matchesLevel`
314+
315+
<p>
316+
317+
**Type :** `matchesLevel(messageLevel: AstroLoggerLevel, configuredLevel: AstroLoggerLevel) => boolean`
318+
</p>
319+
320+
Étant donné deux [niveaux de journalisation](#niveau-de-journalisation), cette fonction renvoie si le premier niveau correspond au second niveau.
321+
322+
```js
323+
import { matchesLevel } from "astro/logger";
324+
325+
matchesLevel("error", "info"); // true
326+
matchesLevel("info", "error"); // false
327+
328+
```

0 commit comments

Comments
 (0)