标签: syslog

如何在Linux中将linux syslog映射到printf

我在桌面上运行了一个linux应用程序,我想将syslog()调用重定向到printf()调用.

注:希望更换电话,只是重定向

所以我写了一些代码来做到这一点:

#ifndef EMBED
#define syslog(level, stuff) printf("SYSLOG: %s\n", stuff)
#endif
Run Code Online (Sandbox Code Playgroud)

在我使用它的一个文件中工作得很好.我将其移动到一个新文件并收到错误:

error: macro "syslog" passed 3 arguments, but takes just 2
Run Code Online (Sandbox Code Playgroud)

我知道错误是因为新文件中的调用是混合的,有些是使用2个参数连接到syslog,有些是使用3.我也知道我需要以某种方式通过变量参数列表重定向这个,但我该怎么做?我还没有工作呢......

据我了解,syslog()和printf()应该是:

void syslog(int priority, const char *format, ...)
int printf(const char *format, ...)
Run Code Online (Sandbox Code Playgroud)

所以我尝试过:

#define ERR 3
#ifndef EMBED         // This is not defined in my env, btw
#define syslog(pri, fmt, ...) printf(fmt, ...)
#endif
...
void main() {
...
syslog(ERR, "test");
Run Code Online (Sandbox Code Playgroud)

但是这给出了错误:

error: expected expression before ‘...’ token
Run Code Online (Sandbox Code Playgroud)

关于如何使用这个宏的建议?

c linux macros syslog

4
推荐指数
1
解决办法
6587
查看次数

Python SysLogHandler不工作:socket.error'连接被拒绝'

我正在尝试使用标准Linux syslogger配置Python应用程序以记录到/ var/log/messages.但是,当我尝试创建syslog处理程序时,我收到错误socket.error: [Errno 111] Connection refused.

>>> import logging
>>> import logging.handlers
>>> logger = logging.getLogger("my_logger")
>>> logger.setLevel(logging.DEBUG)
>>> handler = logging.handlers.SysLogHandler(facility=logging.handlers.SysLogHandler.LOG_DAEMON, address="/var/log/messages")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.6/logging/handlers.py", line 715, in __init__
    self._connect_unixsocket(address)
  File "/usr/lib64/python2.6/logging/handlers.py", line 731, in _connect_unixsocket
    self.socket.connect(address)
  File "<string>", line 1, in connect
socket.error: [Errno 111] Connection refused
Run Code Online (Sandbox Code Playgroud)

/etc/rsyslog.conf配置了以下行:

kern.notice;*.err;local0.info;mail.none;authpriv.none;cron.none;local1.none;daemon.notice /var/log/messages
Run Code Online (Sandbox Code Playgroud)

我猜这个问题是在syslog配置中的某个地方,但据我所知,我做了正确的事情:

  • 我正在尝试创建Python SysLogHandler,并告诉它使用哪个文件
  • 我告诉SysLogHandler使用DAEMON设施
  • rsyslog.conf设置为将守护程序日志发送到/ var/log/messages(以及其他日志)

还有什么我应该做的才能使这项工作?

以前我刚刚使用了一个,logging.FileHandler但是当消息文件换行时,这不能正常工作,Python继续记录到旧文件.

python logging syslog

4
推荐指数
1
解决办法
5721
查看次数

在MAC OSX上使用Python的SyslogHandler时,DEBUG和INFO消息在哪里?

我使用SysLogHandler配置了一个Python记录器,并作为测试使用所有级别记录了一些消息:debug,info,warning,error,critical.如果我运行'syslog'或者我查看Console.app显示,我会看到所有消息.因此,所有消息都被正确记录.但是,当我tail /var/log/messages.log没有看到DEBUG和INFO消息时.我读到了ASL,我看到一个名为/var/log/aslfull of binary files的目录,但是我根本不明白它是如何与syslog交互的.

python macos logging syslog

4
推荐指数
1
解决办法
2890
查看次数

在每个 syslog C++ 之前调用 openlog

我创建了自己的 C 库,我的同事打算使用它。在这个包装器中,我打算使用syslog并根据输入参数,我希望在LOCAL0和之间切换LOCAL1

我发现的最简单的方法是openlog()使用LOCAL0or LOCAL1,取决于输入参数,然后使用syslog()and `closelog()。

我在同一个包装器 API 中拥有所有 3 个(类似于下面的内容):

void syslog_wrap_api(int flag, const char *msg)
{
setlogmask(LOG_UPTO (LOG_INFO));
if(flag == 0)
    openlog("myapplog",LOG_NDELAY,LOG_LOCAL0);
else
    openlog("myapplog",LOG_NDELAY,LOG_LOCAL1);
syslog(LOG_INFO,"%s",msg);
closelog()
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,这个 API 会不会在压力下导致问题(性能问题)?

c c++ syslog

4
推荐指数
1
解决办法
3609
查看次数

在OS X上使用log-driver ="syslog"时出现docker错误

--log-driver="syslog"在OS X上使用时出现docker错误

我正在尝试学习如何docker在OS X上使用容器(10.10.3),我理解与标准Linux实现的差异(需要boot2docker VM),我想知道我是否可以使用syslog记录消息的方式有任何影响

当我使用该--log-driver="syslog"选项启动容器时,会创建容器但是在启动时出现错误

~$ docker run --log-driver="syslog" --name daemon_dwayne -d ubuntu /bin/sh -c "while true; do echo hello_world; sleep 2; done;"
1f623793049916d5c....
FATA[0000] Error response from daemon: Cannot start container 1f623793049916d5....: Unix syslog delivery error
Run Code Online (Sandbox Code Playgroud)

这在Linux机器上正常运行...感谢任何提示

syslog docker boot2docker osx-yosemite

4
推荐指数
1
解决办法
1975
查看次数

如何将tail与syslog文件环绕一起使用?

在某些条件下/var/log/syslog文件被保存到 /var/log/syslog.0一个新的空/var/log/syslog 创建来为系统服务。

问题是 - 如果tail -f /var/log/syslog在上述切换期间运行,则tail停止显示任何内容,因为syslog文件切换。

有什么解决办法吗?

linux syslog

4
推荐指数
1
解决办法
6705
查看次数

Syslog - 如何显示彩色消息?

我需要澄清一下,我不打算为日志输出着色,我只对写入syslog.

所以这里是场景,我有一个systemd运行脚本的单元服务,它指示 Bash 中的 256 种颜色。

这是服务单元文件:

[Unit]
Description=Bash Color Service

[Service]
Type=simple
EnvironmentFile=/etc/environment
ExecStart=/home/username/colors.sh

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=bashcolors

Restart=on-failure
RestartSec=10

User=username
Group=username

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

这是下面的 Bash 脚本/home/username/colors.sh(从这里抓取):

#!/bin/bash

# This program is free software. It comes without any warranty, to
# the extent permitted by applicable law. You can redistribute it
# and/or modify it under the terms of the Do What The Fuck You Want
# To Public License, …
Run Code Online (Sandbox Code Playgroud)

bash syslog tail ansi-escape systemd

4
推荐指数
1
解决办法
2811
查看次数

Tomcat6 webapp使用log4j进行日志记录,无法登录到syslog

我正在尝试将我的webapp日志记录到local4级别的syslog中.环境:Tomcat6,OpenSolaris,Struts2,log4j.我的log4j.properties的内容如下 -

log4j.rootLogger=INFO, SYSLOG
log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.syslogHost=localhost
log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.ConversionPattern=%d [%t] %-5p - %m%n
log4j.appender.SYSLOG.Facility=local4
Run Code Online (Sandbox Code Playgroud)

我编辑了/etc/syslog.conf并在最后添加了以下行 -

local4.notice              /var/log/mylog.log
Run Code Online (Sandbox Code Playgroud)

在此之后,我重新启动了syslog服务.当我从shell运行以下命令时,它会正确记录在/var/log/mylog.log中.这主要意味着系统日志服务正常运行 -

logger -i -p local4.notice -t "check  log" "test message"
Run Code Online (Sandbox Code Playgroud)

但我完全不明白为什么来自webapp的日志永远不会到达/var/log/mylog.log.我的log4j配置对SysLogAppender是否正确?

当我尝试普通的appender,如"DailyRollingFileAppender"等,日志工作正常..但我只是无法让SyslogAppender工作..

谢谢!-Keshav

java log4j struts2 syslog opensolaris

3
推荐指数
1
解决办法
3284
查看次数

有人可以为java推荐一个好的unix syslog*client*库吗?

java.util.logging.Logger似乎实现了"类似syslog"的日志记录,我希望日志实际使用本地syslog日志记录功能(因此管理员的生活更容易;他们不需要进行额外的日志轮换,等等).

有人有什么建议吗?我看到log4j(http://logging.apache.org/log4j/1.2)声称他们有syslog支持,但它公开的API与syslog(8)完全不同.

提前致谢,

java unix logging syslog

3
推荐指数
1
解决办法
1885
查看次数

Django/Python应用程序日志记录不起作用

我是Python的完全noob.现在我正在设置一个新项目,在某些时候我不得不打电话./manage.py syncdb.这是我收到的:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/logging/handlers.py", line 820, in _connect_unixsocket
    self.socket.connect(address)
FileNotFoundError: [Errno 2] No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/logging/config.py", line 557, in configure
    handler = self.configure_handler(handlers[name])
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/logging/config.py", line 725, in configure_handler
    result = factory(**kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/logging/handlers.py", line 803, in __init__
    self._connect_unixsocket(address)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/logging/handlers.py", line 831, in _connect_unixsocket
    self.socket.connect(address)
FileNotFoundError: [Errno 2] No such file or directory

During handling …
Run Code Online (Sandbox Code Playgroud)

python django logging syslog

3
推荐指数
1
解决办法
8930
查看次数