【问题标题】:Syslog directory doesn't exist系统日志目录不存在
【发布时间】:2021-08-27 13:36:52
【问题描述】:

所以我在我的个人 Windows 笔记本电脑上使用 Debian。 我正在执行一项任务,需要在语句运行时使用 syslog c 库从我的程序中打印。

这是我在程序中使用的相关代码:

#include <syslog.h>

(然后在 main 中)

openlog("slog",LOG_PID|LOG_CONS,LOG_USER);
syslog(LOG_INFO,"wuddup to u");
closelog();

代码运行没有问题,但我找不到任何包含我打印的日志的文件。

在 Debian 上,系统日志应该保存在 /var/log/syslog 或 /var/log/messages 中。 /var/log 存在,但我没有其中任何一个文件夹。

它似乎不在隐藏文件中,所以我不认为这是权限问题。 应该位于 /etc 中的 syslog.conf 也不存在。

然而, 在 rsyslog.conf 中有一个对 syslog 的引用,它确实存在于 /etc 中

rsyslog.conf 中标题为 RULES 的部分开头如下:

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
lpr.*                           -/var/log/lpr.log
mail.*                          -/var/log/mail.log
user.*                          -/var/log/user.log

我还没有弄清楚破折号或其他部分的真正含义。 这是我在终端中尝试的一些可能相关命令的输出:

dmesg

[    0.007738]  Microsoft 4.4.0-18362.1049-Microsoft 4.4.35

uname -a

Linux DESKTOP-KH1LDFG 4.4.0-18362-Microsoft #1049-Microsoft Thu Aug 14 12:01:00 PST 2020 x86_64 GNU/Linux

找到 /syslog

find: ‘/syslog’: No such file or directory

sudo apt-get install syslog

[sudo] password for sarah:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package syslog

mkdir syslog(来自 /var/log)

mkdir: cannot create directory ‘syslog’: Permission denied

sudo 服务 rsyslog 启动

[....] Starting enhanced syslogd: rsyslogdrsyslogd: set SO_TIMESTAMP failed on '/dev/log': Invalid argument [v8.1901.0]
rsyslogd: imklog: cannot open kernel log (/proc/kmsg): No such file or directory.
rsyslogd: activation of module imklog failed [v8.1901.0 try https://www.rsyslog.com/e/2145 ]
. ok

【问题讨论】:

  • -/var/log/user.log前面的破折号-有什么意义?这是否意味着规则被禁用,或者文件必须已经存在(但它不存在)或其他什么?最后一行应该控制LOG_USER 条目的去向。
  • @JonathanLeffler 根据this - 前缀是在每个日志条目后省略同步。
  • @IanAbbott:周围有不止一个 syslog 或 syslogd 包;我不确定 Debian 使用的那个是不是来自rsyslog.com 的那个。我认为,破折号与问题无关。
  • 该平台似乎部分是 Microsoft,部分是 Linux — 一个奇怪的组合。在我使用的 RHEL 7.4 机器上,/var/log/messages 是一个文件;没有/var/log/syslog 文件或目录。你能看到系统日志守护进程正在运行吗?试试ps -ef | grep '[s]yslog' 看看它显示了什么——我得到一个以/usr/sbin/rsyslogd 作为程序的条目。
  • 根据您的 uname -a 命令,您正在运行 WSL。在 WSL 上,默认情况下不启动 rsyslogd。尝试首先使用sudo service rsyslog start 启动它。

标签: c linux debian windows-subsystem-for-linux syslog


【解决方案1】:

我跑了

'sudo apt-get install --reinstall rsyslog'

紧随其后

'sudo apt-get install wsl' 

然后我重新编译了我的程序并再次运行它。然后我检查了 /var/log 中的文件,系统日志在那里!与我的日志消息!谢谢!

【讨论】:

  • 我不确定一些事情 - 它们可能有问题:1) Windows Subsystem for Linux (WSL) 总是完全像“真实“Linux。您可能会发现 WSL 与安装在 VM 上的 Debian 之间的差异。 2) 我不确定您的 openlog() 中是否有 slog。您是否将“slog”配置为有效用户? 3) 最重要的是,我不确定你是否需要openlog()/closelog()。我相信你可以直接拨打syslog()
猜你喜欢
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多