Az OTRS egy olyan rendszernaplózó háttérprogrammal érkezik, amely használható az alkalmazás naplózásánál és a hibakeresésnél.
A Log
objektum az ObjectManager
modulon keresztül érhető el és használható ehhez hasonlóan:
$Kernel::OM->Get('Kernel::System::Log')->Log( Priority => 'error', Message => 'Valamire szükség van!', );
A rendszerbeállításokban a MinimumLogLevel
beállításon
keresztül beállított naplózási szinttől függően a naplózott üzenetek a
Prioritás jelzőjük alapján mentésre kerülnek vagy sem.
Ha error
van beállítva, akkor csak a hibák lesznek
naplózva. A debug
értékkel megkapja az összes naplózási
üzenetet. A naplózási szintek sorrendje a következő:
debug
info
notice
error
A rendszernapló kimenete a rendszerbeállításokban lévő
LogModule
beállításban megadottak alapján átirányítható
egy rendszernaplózó démonba vagy naplófájlba.
A rendszernapló mellett az OTRS különleges naplózó háttérprogramot biztosít az összes, a kommunikációra vonatkozó naplózáshoz. Az OTRS 6 óta a rendszer dedikált táblázatokkal és előtétprogramokkal érkezik a kommunikációs naplók követéséhez és megjelenítéséhez, hogy egyszerűbb legyen hibát keresni és a működést áttekinteni.
Az új rendszer előnyeinek kihasználásához először hozzon létre egy nem egyke példányt a kommunikációs napló objektumból:
my $CommunicationLogObject = $Kernel::OM->Create( 'Kernel::System::CommunicationLog', ObjectParams => { Transport => 'Email', # Átviteli naplózó modul Direction => 'Incoming', # Incoming|Outgoing AccountType => 'POP3', # Levelezési fiók típusa AccountID => 1, # Levelezési fiók azonosítója }, );
Amikor megvan a kommunikációs napló objektum példánya, akkor elindíthat egy
objektumnaplózást az egyéni üzenetek naplózásához. Jelenleg két
objektumnapló van megvalósítva: Connection
és
Message
.
A Connection
objektumnaplót kell használni minden, a
kommunikációra vonatkozó üzenet naplózásához (például hitelesítés egy
kiszolgálón vagy bejövő üzenetek fogadása).
Egyszerűen indítsa el az objektumnaplót a típusának meghatározásával, és már azonnal használhatja:
$CommunicationLogObject->ObjectLogStart( ObjectLogType => 'Connection', ); $CommunicationLogObject->ObjectLog( ObjectLogType => 'Connection', Priority => 'Debug', # Trace, Debug, Info, Notice, Warning vagy Error Key => 'Kernel::System::MailAccount::POP3', Value => "Kapcsolat nyitása ehhez: 'host.example.com' (user-1).", );
A kommunikációs napló objektum példánya kezeli a jelenleg elindított objektumnaplókat, így nem kell megjegyeznie és előhoznia mindenhol, de ez azt is jelenti, hogy csak egyetlen objektumot indíthat típusonként.
Ha javíthatatlan hibával találkozik, akkor választhatja az objektumnapló bezárását és sikertelenként való megjelölését:
$CommunicationLogObject->ObjectLog( ObjectLogType => 'Connection', Priority => 'Error', Key => 'Kernel::System::MailAccount::POP3', Value => 'Valami nem működik!', ); $CommunicationLogObject->ObjectLogStop( ObjectLogType => 'Connection', Status => 'Failed', );
Viszont megjelölheti a kommunikációs naplót sikertelennek is:
$CommunicationLogObject->CommunicationStop( Status => 'Failed', );
Egyébként állítsa le az objektumnaplót és jelölje a kommunikációs naplót sikeresként:
$CommunicationLogObject->ObjectLog( ObjectLogType => 'Connection', Priority => 'Debug', Key => 'Kernel::System::MailAccount::POP3', Value => "A(z) 'host.example.com' kapcsolata lezárva.", ); $CommunicationLogObject->ObjectLogStop( ObjectLogType => 'Connection', Status => 'Successful', ); $CommunicationLogObject->CommunicationStop( Status => 'Successful', );
A Message
objektumnaplót kell használni minden olyan
naplóbejegyzésnél, amelyek bizonyos üzenetek és azok feldolgozását
érintik. Hasonló módon használható, egyszerűen győződjön meg arról, hogy
elindította-e a használta előtt:
$CommunicationLogObject->ObjectLogStart( ObjectLogType => 'Message', ); $CommunicationLogObject->ObjectLog( ObjectLogType => 'Message', Priority => 'Error', Key => 'Kernel::System::MailAccount::POP3', Value => "Nem sikerült feldolgozni az üzenetet. Nyers levél elmentve (jelentse a https://bugs.otrs.org/ oldalon)!", ); $CommunicationLogObject->ObjectLogStop( ObjectLogType => 'Message', Status => 'Failed', ); $CommunicationLogObject->CommunicationStop( Status => 'Failed', );
Lehetősége van hivatkozni a naplóobjektumra és később megkeresni a kommunikációkat egy bizonyos objektumtípus vagy azonosító esetén:
$CommunicationLogObject->ObjectLookupSet( ObjectLogType => 'Message', TargetObjectType => 'Article', TargetObjectID => 2, ); my $LookupInfo = $CommunicationLogObject->ObjectLookupGet( TargetObjectType => 'Article', TargetObjectID => 2, );
Meg kell győződnie arról, hogy mindig leállította-e a kommunikációt és megjelölte-e sikertelenként, ha valamelyik naplóobjektum sikertelen lenne. Ez lehetővé fogja tenni az adminisztrátorok számára, hogy megtekintsék a sikertelen kommunikációkat az áttekintőben, és megtegyék a szükséges lépéseket.
Fontos megőrizni a kommunikációs naplót egyetlen folyamat időtartamára. Ha munkája több modult is érint, és bármelyikük kihasználhatja a naplózás előnyeit, akkor győződjön meg arról, hogy átadta-e a létező kommunikációs napló példányát, így az összes metódus ugyanazt tudja használni. Ezzel a megközelítéssel biztosíthatja, hogy az azonos folyamathoz tartozó naplóbejegyzések egyetlen kommunikációban legyenek tárolva.
Ha a kommunikációs napló példányának átadása nem lehetséges (aszinkron feladatok!), akkor választhatja a kommunikációs napló objektum újra létrehozását ugyanabban az állapotban, amiben az előző lépésben volt. Egyszerűen fogja a kommunikációs azonosítót, és adja át az új kódnak, majd hozza létre az új példányt ezzel a megadott paraméterrel:
# Kommunikációs azonosító lekérése a szülőkódban. my $CommunicationID = $CommunicationLogObject->CommunicationIDGet(); # Valahogy adja át a kommunikációs azonosítót a gyermekkódnak. # ... # A példány újra létrehozása a gyermekkódban ugyanazon kommunikációs azonosító használatával. my $CommunicationLogObject = $Kernel::OM->Create( 'Kernel::System::CommunicationLog', ObjectParams => { CommunicationID => $CommunicationID, }, );
Ezután folytathatja ennek a példánynak a használatát, amint azt korábban említettük. Indítson el valamilyen objektumnaplót, ha szükséges, adjon hozzá bejegyzéseket és állítsa be az állapotot a végén.
Ha a kommunikációs napló adatainak lekérésére van szüksége vagy valami mást
szeretne csinálni vele, akkor vessen egy pillantást a
Kernel::System::CommunicationLog::DB.pm
fájlra.