logger is een command-line tool die wordt gebruikt in Linux en Unix besturingssystemen om logs toe te voegen aan het lokale /var/log/syslog
bestand of de remote Syslog server. logger biedt verschillende opties voor het toevoegen van logs, zoals het instellen van prioriteit, het specificeren van een extern systeem of het expliciet definiëren van de Syslog poort.
logger commando is standaard geïnstalleerd in de meeste Linux distributies. Het is dus niet nodig om het expliciet te installeren. We kunnen de help en gebruiksinformatie afdrukken met de -h
optie zoals hieronder. De meest gebruikte opties van het logger commando worden opgesomd met een beschrijving.
$ logger -h
Als alternatief voor meer gedetailleerde hulp en gebruiksinformatie kunnen we de man pagina van het logger commando bekijken en gebruiken, zoals hieronder.
$ man logger
logger Command Syntax
logger command heeft een eenvoudige syntaxis waarbij eerst opties worden gegeven en dan het log of het bericht dat we naar Syslog willen sturen.
logger OPTIONS LOG
- `OPTIONS` zijn enkele of meer opties om enkele attributen in te stellen zoals remote server, poort, log faciliteit etc.
- `LOG` is het log bericht dat we willen toevoegen of verzenden. Omgeven door dubbele aanhalingstekens maakt het betrouwbaarder.
Linux Syslog
Syslog mechanisme is een belangrijk onderdeel van de Linux logging. De meeste Linux distributies zoals Ubuntu, Debian, CentOS, Mint, RedHat, Suse slaan de log bestanden op onder de /var/log
directory. Er zijn verschillende soorten logs onder deze directory zoals auth, MySQL, apache, enz. Syslog is een algemeen logbestand en het systeem dat gebruikt wordt om logs op te slaan met betrekking tot het systeem, diensten, enz. Het syslog
bestand kan bekeken worden met het tail commando zoals hieronder.
$ tail /var/log/syslog
Logs van Syslog afdrukken
Voordat we beginnen met het toevoegen van een log aan het syslog-bestand, is het erg nuttig om het huidige syslog-bestand af te drukken. We kunnen verschillende commando’s gebruiken om het syslog bestand af te drukken. tail
is een commando dat gebruikt wordt om de laatste 10 lijnen van het gegeven bestand af te drukken. Als alternatief kunnen we het aantal regels dat we willen afdrukken expliciet opgeven. In het volgende voorbeeld zullen we 30 lijnen uit de /var/log/syslog
afdrukken. We gebruiken de optie -n
om het aantal regels op te geven.
$ tail -n 30 /var/log/syslog
Log toevoegen aan Syslog-bestand
Laten we beginnen met een eenvoudig voorbeeld van het logger-commando. We voegen een enkele regel toe aan het syslog-bestand zonder een optie toe te voegen aan het logger-commando. In het volgende voorbeeld voegen we de regel “This is just a simple log line” toe aan het syslog bestand. Daarna maken we een lijst met behulp van het commando tail.
$ logger "This is just a simple log line"
We kunnen zien dat het logboek is toegevoegd aan het einde van het bestand dat onderaan wordt vermeld.
- `Feb 26 01:20:47` is de tijdstempel of datuminformatie over het logboek op het moment dat het aan het syslog-bestand wordt toegevoegd.
- `poftut-com` is de naam van het systeem.
- `ismail` is de naam van de gebruiker of de logger.
Specificeer Log Prioriteit of Faciliteit
In het algemeen worden logs geprioriteerd door de bronnen die het log aanmaken. Dit wordt ook wel een faciliteit genoemd die wordt gebruikt om de logs te categoriseren. We kunnen de prioriteit of faciliteit opgeven door gebruik te maken van de -p
of --priority
long-form optie. Als we de prioriteit of faciliteit niet opgeven is de standaard user.notice
. In het volgende voorbeeld stellen we de lof prioriteit in als local3.info
.
$ logger -p "local3.info" "This is just a simple log line"
Specifieer Remote Syslog Server IP Adres
Het logger commando zal standaard de gegeven logline in het lokale systeem /var/log/syslog
bestand zetten. Maar dit is niet altijd het geval. In bedrijfsomgevingen moeten de logs worden verzameld en beheerd in een centrale logserver. We kunnen het logger commando gebruiken om het gegeven log naar de server op afstand te sturen door het IP adres of de hostnaam op te geven. We zullen de -n
of --server
optie gebruiken om de remote log server te sturen.
$ logger -n 192.168.1.10 "This is just a simple log line"
Use TCP As Syslog Protocol
Syslog gebruikt standaard het UDP protocol. UDP zorgt voor een snellere, low resource en gemakkelijke transmissie van log bestanden. Maar UDP biedt geen volledige betrouwbaarheid waar TCP om de hoek komt kijken. We kunnen het standaard transmissie protocol UDP veranderen in TCP door gebruik te maken van de -T
of --tcp
optie.
$ logger -n 192.168.1.10 -T "This is just a simple log line"
Specifieer Remote Syslog Server Port Number
Bij het versturen van een log van het lokale naar het remote systeem is de standaard poort van het syslog 514 voor zowel het UDP als het TCP protocol. We kunnen het poort nummer expliciet veranderen door de -P
of --port
optie te gebruiken door het poort nummer op te geven.
$ logger -n 192.168.1.10 -P 1514 "This is just a simple log line"
Redirect Command Output As Log
Linux biedt een heleboel tools die hun acties precies loggen. We kunnen het logger commando gebruiken om de uitvoer van deze commando’s als een log te versturen. We zullen gewoon de bash shell backticks gebruiken om het commando te omgeven. Hieronder zullen we het commando who
in de syslog loggen.
$ logger `who`
De laatste regel van het syslog geeft de uitvoer van het who-commando dat de gebruikersnaam, het console-nummer en de datum van de momenteel ingelogde gebruiker.
Log gespecificeerd bestand
We kunnen de inhoud van een tekstbestand regel voor regel in het syslog-bestand zetten. We gebruiken de -f
optie en geven het bestand op dat we willen loggen. In dit voorbeeld loggen we het bestand met de naam hostnames
.
$ logger -f hostnames
Loggrootte instellen of beperken
Logs worden gebruikt om eenvoudige informatie te creëren. Dus als er een aantal regels zijn met veel data moeten ze vertaald worden of een limiet instellen. We kunnen een limiet instellen voor het aantal karakters van de log regels door gebruik te maken van de --size
optie en het aantal karakters dat we willen instellen. In het volgende voorbeeld stellen we het aantal of de limiet in op 10.
$ logger --size 10 123456789012345678901234567
Geen lege of lege regels
Tijdens het lezen van logboekregels uit een bestand kunnen er lege of lege regels zijn. Het loggen van lege of lege regels is niet efficiënt, dus we kunnen de lege of lege regels negeren door gebruik te maken van de -e
optie zoals hieronder.
$ logger -e -f hostnames