Forum: PC-Programmierung Linux Systemctl


von Z.B. Max (darter)


Lesenswert?

Hi,
ich habe ein einfaches Programm welches bei einem Event eine Nachricht 
mit Hilfe von log4cpp in eine Log-Datei speichert.

main.cpp
1
void initLogger(){
2
  log4cpp::PatternLayout* myLayout = new log4cpp::PatternLayout();
3
  //myLayout->setConversionPattern("%d [%p] %m%n");
4
  myLayout->setConversionPattern("%d{[%a] [%d-%m-%G] [%H:%M:%S]} [%c] %m%n"); //[Tue] [25-07-2023] [18:33:08]
5
6
  log4cpp::Appender *console = new log4cpp::OstreamAppender("console", &std::cout);
7
  console->setLayout(myLayout);
8
9
  log4cpp::Appender *file = new log4cpp::FileAppender("default", "program.log");
10
  file->setLayout(myLayout);
11
12
  Log.setPriority(log4cpp::Priority::INFO);
13
  Log.addAppender(console);
14
  Log.addAppender(file);    
15
    
16
  MotionLogger.setPriority(log4cpp::Priority::INFO);
17
  MotionLogger.addAppender(console);
18
  MotionLogger.addAppender(file);    
19
}
20
..
21
..
22
..
23
MotionLogger.info("Bewegung wurde erkannt von Sender -> %c%c%c", usbMsg[2], usbMsg[3], usbMsg[4]);

Alarm.service
1
[Unit]
2
Description=Alarmanlage
3
4
[Service]
5
Type=simple
6
StandardOutput=journal
7
ExecStart=/home/kali/cpp_test/alarm/main
8
9
[Install]
10
WantedBy=multi-user.target

Wenn ich das Programm mit ./main starte funktioniert alles.
Benutze ich
1
sudo systemctl start Alarm
startet das Programm aber es wird keine program.log Datei angelegt.
Woran liegt das?

von Stefan P. (form)


Lesenswert?

Vermutlich wird sie angelegt, aber eben nicht in dem Pfad wo du dich 
gerade aufhälst. Kannst es ja mal mit einem absoluten Pfad im Programm 
probieren.

von Harald K. (kirnbichler)


Lesenswert?

Z.B. Max schrieb:
> log4cpp

Kann das auch so schicke Dinge wie log4j?

von Norbert (der_norbert)


Lesenswert?

Harald K. schrieb:
> Kann das auch so schicke Dinge wie log4j?

Autsch! ;-)

von Sascha W. (sascha-w)


Lesenswert?

Und dann sollte man in der Unit auch einen Benutzer angeben, sonst läuft 
das Programm als root - und das sollte man vermeiden wenn es für die 
Funktion nicht benötigt wird.

Sascha

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.