2017-04-27 3 views
0

J'ai le script de service systemd suivante pour exécuter une botte de printemps application-
exploitation forestière Systemd au fichier externe

[Unit] 
Description=Upstart for Security 
After=network.target network-online.target 
Wants=network-online.target 

[Service] 
User=root 
WorkingDirectory=/home/ubuntu/security 
ExecStart=/usr/bin/java -classpath java -Dspring.profiles.active=stage -jar /home/ubuntu/security/security-0.0.1-SNAPSHOT.jar > /home/ubuntu/security/security.log 2>&1 
SuccessExitStatus=143 
Restart=on-failure 
RestartSec=120s 

[Install] 
WantedBy=multi-user.target 


j'enregistrer le script à l'emplacement suivant -

/etc/systemd/system 


J'ai exécuté les commandes suivantes pour exécuter le script de service systemd -

1. sudo systemctl enable security.service -or- sudo systemctl daemon-reload 
2. sudo systemctl status security.service 
3. sudo systemctl start security.service 


Pour vérifier les journaux, je feu la commande -

journalctl -u security.service 

et utiliser SHIFT+G pour faire défiler EOF

Je suis en mesure de vérifier les journaux par les étapes ci-dessus , mais je les veux dans un fichier externe dans l'emplacement /home/ubuntu/security, comme security.log
Comment puis-je l'atteindre? Quel changement est-ce que je fais dans mon script systemd?

+1

double possible de [Comment rediriger la sortie du service systemd vers un fichier] (http: // stackoverflow.com/questions/37585758/how-to-redirect-output-of-systemd-service-to-a-file) – Barend

Répondre

1

Vous pouvez utiliser syslog pour accomplir ceci. Demandez à votre service systemd d'acheminer stdout/stderr vers syslog avec un identifiant et demandez à syslog de gérer l'écriture dans le fichier.

[Service] 
... 
StandardOutput=syslog 
StandardError=syslog 
SyslogIdentifier=<your-svc-identifier> 

Maintenant, ajoutez une config à syslog dans /etc/rsyslog.d/

if $programname == '<your-svc-identifier>' then /var/log/<your-svc>.log 
if $programname == '<your-svc-identifier>' then stop 

Recharger syslog

$ sudo systemctl restart rsyslog