TL;DR:对于默认的现代systemd基础的Linux发行版(Ubuntu 15.04+),可以尝试使用
journalctl -r _COMM=vlc
命令,它包括了作为通过stdout记录日志的进程的常见日志接收器的jounrald,其中包括VLC。
上面的许多答案都很有用和信息丰富,@Zoltán提供了一个适用于通过snap安装的VLC的解决方案(
sudo snap install vlc
):
VLC将记录到/var/log/syslog
然而,更好、更现代的方法是使用过滤到vlc命令的journalctl,例如最后10行:
journalctl -r _COMM=vlc --lines 10 --no-pager
以下的旧方法搜索syslog已经足够好了,因为rsyslogd默认读取journald并将日志记录到/var/log/syslog。
grep vlc /var/log/syslog | tail
上述的两个选项默认情况下是有效的(适用于VLC snap 3.0.8和Ubuntu 18.04.4 LTS),因为VLC进程日志输出到标准输出(stdout),我假设journald会捕获标准输出。所以以下两个选项,按照默认设置,都可以不勾选:
高级 -> 日志记录器 -> 记录到文件
高级 -> syslog -> 系统日志(syslog)
然而,如果您直接从终端执行vlc而不是gnome(或其他)桌面启动器,则标准输出(stdout)和标准错误(stderr)流将会输出到终端控制台而不是journald。在这种情况下,启用其中任何一个显式的日志记录选项可能是合适的。
如果希望记录到文件,对于安装为snap的应用程序来说可能会有些棘手,因为snaps具有更严格的安全模型,可能会阻止在任意目录创建日志文件。
如果需要一个专用的日志文件,可以将日志记录到snap允许写入的位置(参见`snap connections vlc`,我注意到您的主目录等位置可以被写入)。直接写入/var/log中的某个位置可能是不允许的。
默认情况下(在Ubuntu 18.04中),journald不会在重新启动后保留事件,但syslog会。如果需要,可以显式地启用journald事件的持久化。
直接将VLC日志记录到文件中似乎没有将时间戳放入直接日志文件中,而journald和syslog会包含生成事件的时间戳。
在Linux社区完全准备好采用具有持久性的journald(而不是syslog)之前,它们共存,因此处理此问题的传统*nix方式是配置rsyslog将VLC日志重定向到单独的日志位置。例如,创建具有适当权限的目录:
sudo mkdir /var/log/vlc
sudo chown syslog:adm /var/log/vlc
sudo chmod ug+rwX,o-rwx /var/log/vlc/
在rsyslog中添加一个配置文件,例如在
/etc/rsyslog.d/30-vlc.conf
。
# filter out and move various VLC snap messages to it's own log file
if ($programname == 'vlc' or $programname == 'vlc_vlc.desktop') then
{
action
( name="cntlm_log_file"
type="omfile"
file="/var/log/vlc/vlc.log"
fileCreateMode="0640"
fileOwner="syslog"
fileGroup="adm"
)
# don't log events to the system's default syslog file
stop
}
重新启动服务:sudo systemctl restart rsyslog
还要确保设置好日志轮转,例如每周轮转一次,保留12周,创建一个文件/etc/logrotate.d/vlc,内容如下:
/var/log/vlc/*.log
{
rotate 12
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
invoke-rc.d rsyslog rotate >/dev/null 2>&1 || true
endscript
}
愉快地记录...