首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用syslog (linux)在日志文件中写入错误类型

用syslog (linux)在日志文件中写入错误类型
EN

Stack Overflow用户
提问于 2017-03-23 17:47:46
回答 2查看 1.3K关注 0票数 1

有关使用syslog库将错误消息写入日志文件的问题。

下面是我试图使用的代码函数

代码语言:javascript
复制
syslog(int priority, const char_message)

我想在日志文件中打印按摩的优先级。例如:

3月23日17:56:37 mypc slog3597:这是日志按摩“错误”

但现在只是展示:

3月23日17:56:37 mypc slog3597:这是日志按摩

无论如何,我也可以将优先级的类型写入日志文件吗?(syslog只接受字符串文字)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-23 18:15:17

syslog的功能原型是:

代码语言:javascript
复制
void syslog(int priority, const char *format, ...);

特别是,第二个参数类似于printf-style格式说明符,但它也支持说明符%m,该说明符%m将被strerror(errno)生成的错误消息替换。

您可以通过调用以下函数记录一个简单字符串和一个优先级字符串:

代码语言:javascript
复制
void my_simple_syslog(int priority, const char *message)
{
    static const char * const prio_strings[] = {
        [LOG_EMERG] = "EMERG",
        [LOG_ALERT] = "ALERT",
        [LOG_CRIT] = "CRIT",
        [LOG_ERR] = "ERR",
        [LOG_WARNING] = "WARNING",
        [LOG_NOTICE] = "NOTICE",
        [LOG_INFO] = "INFO",
        [LOG_DEBUG] = "DEBUG",
    };

    if (priority < 0 ||
        priority >= sizeof(prio_strings) / sizeof(prio_strings[0]) ||
        !prio_strings[priority]) {
        /* priority is an unknown value */
        syslog(priority, "%s [PRIORITY:%d]", message, priority);
    } else {
        syslog(priority, "%s [%s]", message, prio_strings[priority]);
    }
}

此示例调用:

代码语言:javascript
复制
my_simple_syslog(LOG_ERR, "this is log massage");

生成类似于以下内容的日志消息:

3月23日17:56:37 mypc slog3597:这是日志按摩错误

使用这种固定的方法的缺点是不能像直接调用syslog那样添加额外的参数。

票数 1
EN

Stack Overflow用户

发布于 2017-03-26 15:49:06

注意,syslog消息已经包含优先级,但是当它被写入文件时,它会被syslog守护进程(例如rsyslog)删除。通过syslog()调用向syslog守护进程传递的syslog消息实际上如下所示:

代码语言:javascript
复制
<16>Mar 23 17:56:37 mypc slog[3597]: this is log massage

可以重新配置syslog守护进程,以便打印优先级。Rsyslog使用模板,使用NXLog,您可以这样做:

代码语言:javascript
复制
Exec $raw_event = $raw_evnt + " " + $SyslogSeverity;

另见https://stackoverflow.com/a/9216977/995934

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42983390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档