# Rekord akcióvizsgálati események egy szülői audit sink

> Figyeljen a könyvvizsgálati opcióra és kifejezetten hívja meg a $.audit() névjegyzést anélkül, hogy kapcsolatba lépne egy napló szolgáltatással vagy érzékeny bejegyzéseket írna egy alkalmazás naplójára.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: hu
Content-SHA256: 95031298717552f143b6ea0bfccc407fa0e1785d84714fbdb584bee5bf9f9e7f
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

Egy művelet az `audit` értékét szövegsablonra állíthatja. Sikeres befejezéskor a keretrendszer egy audit rekordot küld a `DEF.onAudit(name, data, context)` függvénynek. Az automatikus rekord az `actions` sinknevet használja, és tartalmazza a művelet azonosítóját. A művelet explicit módon is hívhatja a `$.audit(message, type)` függvényt; ez saját rekordot bocsát ki, és hordozhat olyan típust, mint az `info`.

A példa az audit sinket memóriabeli gyűjtőre cseréli, hogy megvizsgálhassuk a szerződését. Csak a nevet, a művelet azonosítóját, az üzenetet és a típust rögzíti. A keretrendszer kontextusadatokat és szerializált kérésadatokat is előkészít: egy valódi sinknek explicit szabályzat kell a titkokra, megőrzésre, hozzáférésre és hibákra. Az audit esemény nem bizonyíték arra, hogy egy üzleti tranzakció véglegesítődött; a műveletnek csak a tervezett írás sikere után szabad meghívnia a sikeres visszahívását.

Ebben a verzióban az automatikus audit esemény történik a sikeres cselekvési hívás utat követően. nem automatikusan regisztrálja a validációs hibákat vagy a kudarcokat.

```js definitions/audit.js
MAIN.auditEvents = [];
DEF.onAudit = function(name, data) {
	MAIN.auditEvents.push({ sink: name || null, action: data.action, message: data.message || '', type: data.type || null });
};

NEWACTION('AuditExample|save', {
	input: '*name:String',
	audit: 'Saved the example',
	action: function($) {
		$.callback({ ok: true });
	}
});

NEWACTION('AuditExample|explicit', {
	action: function($) {
		$.audit('Explicit example event', 'info');
		$.success();
	}
});

NEWACTION('AuditExample|fail', {
	audit: 'This must not become a success event',
	action: function($) {
		$.invalid(409);
	}
});
```

```js controllers/audit.js
exports.install = function() {
	ROUTE('POST /save/ --> *AuditExample|save');
	ROUTE('POST /explicit/ --> *AuditExample|explicit');
	ROUTE('POST /fail/ --> *AuditExample|fail');
	ROUTE('GET /events/', function($) { $.json(MAIN.auditEvents); });
};
```
