最新消息:

树莓派3-家庭监控软件Zoneminder日志说明

Raspberry Pi 少儿编程 1575浏览 0评论
树莓派3家庭监控

日志说明

大多数的Zoneminder组件可以产生信息、警告、错误和调试以标准格式的消息。这些消息可以被记录在一个或多个位置。默认情况下由脚本所有消息记录在<名称>的剧本,这是放置在由zm_path_logs配置变量定义日志文件的目录。这是最初定义为“/tmp”虽然可以重写(见选项和用户段以上)。例如,在zmpkg.pl脚本将输出消息/tmp/zmpkg.pl,这些信息的一个例子是:

03/01/06 13:46:00.166046 zmpkg[11148].INF [Command: start]

其中第一部分是对输入的日期和时间,下一节的名称(或缩写)的脚本,随后在方括号中的进程ID,严重性代码((INF, WAR, ERR or DBG)和调试文本。如果更改日志目录的位置,确保它是指Web用户具有写入权限的现有目录。也确保没有在该目录中的日志,Web用户没有打开的权限。这可能会发生,如果你运行的命令或脚本作为根用户进行测试在某一点上。如果发生这种情况,那么随后的非特权运行将失败,由于无法打开日志文件。

以及具体的文字记录,信息,警告和错误消息记录通过系统日志服务。这是一个标准的组件在一个标准的方式,并允许使用一个标准的格式记录各种信息,并使用标准格式。在大多数系统中,除非另行配置,由ZoneMinder的消息就去/var/log/messages文件。在一些发行版上,它们可能会出现在另一个文件中,但通常是在一个文件中。此文件中的消息与脚本日志文件中的类似,但略有不同。例如,在系统日志文件中的上述事件看起来像:

Jan  3 13:46:00 shuttle52 zmpkg[11148]: INF [Command: start]

在这里你可以看到,日期格式不同(只有1秒精度)和有一个额外的字段为主机名(如日志可以通过网络操作)。以及在这个文件条目Zoneminder你也可能会看到作品从各种其他系统组件。你应该确保你的syslogd守护进程运行syslog消息被正确处理。

许多用户问如何抑制或重定向Zoneminder消息写入该文件。这通常是由于不想其他系统消息被遮蔽的Zoneminder产生的(这是默认情况下相当频繁)。为了控制系统日志消息你需要找到与你的系统编辑syslog.conf文件。这将经常在/etc等目录。该文件允许配置syslog使某些类和类的消息路由到不同的文件或突出一个控制台,或者只是忽略。对这种文件格式的细节已经超出了本文的范围( ‘man syslog.conf’会给你更多的信息 )但最经常要求的变化是很容易实现的。

syslog服务使用的概念,重点和设施,前者指的是消息,后者的重要性是指系统的一部分,从它的起源。标准重点包括’信息’,’警告’,’错误’和’调试和使用这些优先级Zoneminder当生成消息的相应类。标准设施包括 ‘mail’, ‘cron’ and ‘security’ 等,但同时,有八个当地的设施,可以通过机器的具体信息发生器。产生它的Zoneminder通过 ‘local1’ 设备。

随着优先权和信息设施的知识武装,syslog.conf文件可以修改任何你喜欢的消息处理。

所以要确保所有Zoneminder消息发向特定的日志文件,您可以添加以下行近你的syslog.conf文件的顶部:

# Save ZoneMinder messages to zm.log
local1.*                        /var/log/zm/zm.log

这将确保与local1设备生产的所有邮件路由到 /var/log/zm/zm.log 文件。然而,这并不一定防止他们也进入标准的系统日志。要这样做,您将需要修改确定记录到该文件的消息的行。这可能看起来像:

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;news.none;authpriv.none;cron.none      /var/log/messages

默认情况下。除去Zoneminder消息从这个文件你完全可以修改此线的样子:

*.info;local1.!*;mail.none;news.none;authpriv.none;cron.none     /var/log/messages

指导syslog忽视从local1设施的任何消息。如果您仍然希望在系统日志文件中出现警告和错误,则可以将其更改为:

*.info;local1.!*;local1.warning;mail.none;news.none;authpriv.none;cron.none     /var/log/messages

遵循忽略进一步表明与设施和优先local1警告或以上的任何消息还是应该进入文件指令。

这些内容只是你如何修改日志记录,以适应你的系统的例子,有很多其他的修改,你可以。如果你对syslog.conf你应该确保你重启syslogd进程或发送一个hup信号,迫使它重新读取配置文件,否则您的更改将被忽略做任何改变。

日志记录的讨论开始于描述脚本是如何产生错误和调试消息的。二进制文件的工作方式略有不同。二进制文件生成信息、警告和错误消息使用syslog一样,脚本和这些信息将被处理相同。然而,调试输出有点不同。对于脚本,如果你想启用调试您需要编辑脚本文件本身和恒有价值1的dbg_level。这样将导致调试消息被写入到<脚本>。日志文件以及更重要的消息。调试消息然而不会被路由通过syslog。脚本目前只有一个级别的调试,所以这将导致任何和所有的调试消息生成。双星工作略有不同,当你编辑的电话zmdbginit,是存在于每一个二进制的主要功能更新调试级别的初始值,有更容易的方法。

收集的调试输出的最简单的方法是点击选项链接从ZoneMinder主控制台视图然后去“调试”选项卡。在那里,你会发现一些调试选项。你应该做的第一件事是确保zm_extra_debug设置开关。这使调试一般。下一步你需要做的是选择调试目标,级别和目标文件使用相关的选项。点击“?通过每一个选项来了解更多关于有效设置的信息。您将需要重新启动Zoneminder作为一个整体,或至少在有问题的组件用于记录生效。当你已经完成调试,你应该确保你开关调试了不zm_extra_debug选项和重启Zoneminder。如果主调试选项关闭,则可以忽略其他选项,如它们被忽略。

一旦你有调试记录你可以通过发送信号到相关usr1和usr2二进制修改水平(或二进制)来增加或减少的水平调试产生立竿见影的效果。此修改将不会持久,如果二进制重新启动。

如果你想运行一个二进制直接从命令行来测试特定的功能或场景中,你可以设置zm_dbg_level和zm_dbg_log环境变量设置水平和调试你希望看到的日志文件,并zm_dbg_print环境变量1输出直接调试你的终端。

所有Zoneminder日志现在可以旋转logrotate。logrotate 配置文件如下所示:

/var/log/zm/*.log {
    missingok
    notifempty
    sharedscripts
    postrotate
        /usr/local/bin/zmpkg.pl logrot 2> /dev/null > /dev/null || true
    endscript
}

原文:http://zoneminder.readthedocs.io/en/latest/userguide/logging.html

您必须 登录 才能发表评论!