I successfully installed pcsclite-openrc and everything works well with my yubikey. However, since I only have newbie experience with openrc from one gentoo installation in the past, I struggle with the logging of some daemons such as pcscd. Somehow the daemon is configured to log to stdout with the -f flag:
/etc/init.d/pcscd
command_args="${EXTRA_OPTS} -f"
Now I am a newbie when it comes to openrc and logging systems such as syslog-ng. I just found out about supervise-daemon in the gentoo openrc wiki: https://wiki.gentoo.org/wiki/OpenRC/supervise-daemon. This kind of explains why the -f flag is used, but how do I access logs from stdout? The wiki states:
I do not find any logs from pcscd in /var/log/messages.log, other than it being started by the supervisor. What do I need to do to get it to log via syslog-ng? Is it about the loglevel? I'm not sure what to do.
Change
/etc/init.d/pcscd to contain this line:
supervise_daemon_args="--stdout /var/log/yourlogfile"
Thank you for your reply, that's good to know! Any place where I can find this documented?
I'm still confused though about the documentation I quoted, specifically "can be caught by the supervisor, and then sent to the system logger". Your example logs directly to the file -- any way I can somehow send it through syslog? I thought the point of using syslog is that I do not have to redirect output to specific files.
-f, --foreground
Runs pcscd in the foreground and sends log messages to stderr instead of syslog(3)
This is hardcoded to pcscd. OTOH, supervise-daemon needs '-f' in order to supervise pcscd. I can't test it as I don't have the hardware, but in my syslog I'm getting a line from pcscd:
"pcscd[10099]: debuglog.c:299:DebugLogSetLevel() debug level=debug"You can use logger(1) to redirect anything to syslog, there are thousands of howtos on the internet.
I see, so the stdout log is kind of an unwanted side effect of running pcscd in the foreground. I would like to log to syslog in foreground, but I guess that is the design choice of pcscd. I'm comfortable with working around this though.
Thanks, that is one part of the solution. But I was more concerned of
how to log with a command like `logger` as opposed to a log file. `--stdout` expects a file argument, so that particular flag does not work for me.
I found the solution in a github issue, for anyone that is interested: https://github.com/OpenRC/openrc/issues/127#issuecomment-398129031
Checking the man page of `start-stop-daemon` reveals that the flag for supervise_daemon that allows logging to another process is `--stdout-logger/--stderr-logger`. Using the `logger` command as an argument for this flag works for me.,
Thanks for pointing me in the right direction! A lot to learn working without systemd/journald :)
EDIT: Wrong, I mixed up start-stop-daemon with supervise daemon; I thought they have the same command line arguments. Unmarked the thread as solved, as I am again not sure how to achieve what I am aiming for.
EDIT 2: Marked as solved again. This is my final solution:
output_logger_arg="--stdout-logger /usr/bin/logger"