标签: rsyslog

syslog中的多行日志记录

所以我已经配置我的Python应用程序使用Python的SysLogHandler登录到syslog,一切正常.除了多线处理.并不是说我需要如此糟糕地发出多行日志记录(我做了一点),但我需要能够阅读Python的异常.我正在使用Ubuntu和rsyslog 4.2.0.这就是我得到的:

Mar 28 20:11:59 telemachos root: ERROR 'EXCEPTION'#012Traceback (most recent call last):#012  File "./test.py", line 22, in <module>#012    foo()#012  File "./test.py", line 13, in foo#012    bar()#012  File "./test.py", line 16, in bar#012    bla()#012  File "./test.py", line 19, in bla#012    raise Exception("EXCEPTION!")#012Exception: EXCEPTION!
Run Code Online (Sandbox Code Playgroud)

测试代码,以备不时之需:

import logging
from logging.handlers import SysLogHandler

logger = logging.getLogger()
logger.setLevel(logging.INFO)
syslog = SysLogHandler(address='/dev/log', facility='local0')
formatter = logging.Formatter('%(name)s: %(levelname)s %(message)r')
syslog.setFormatter(formatter)
logger.addHandler(syslog)

def foo():
    bar()

def bar():
    bla()

def bla():
    raise Exception("EXCEPTION!")

try:
    foo()
except:
    logger.exception("EXCEPTION")
Run Code Online (Sandbox Code Playgroud)

python logging syslog rsyslog

36
推荐指数
2
解决办法
2万
查看次数

与syslog消息格式混淆

我对syslog消息格式有点困惑.我必须编写一个解析syslog消息的程序.当我读到我在syslog-ng实例中得到的内容时,我得到这样的消息:

Jan 12 06:30:00 1.2.3.4 apache_server: 1.2.3.4 - - [12/Jan/2011:06:29:59 +0100] "GET /foo/bar.html HTTP/1.1" 301 96 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 ( .NET CLR 3.5.30729)" PID 18904 Time Taken 0
Run Code Online (Sandbox Code Playgroud)

我可以清楚地确定真实的消息(在这种情况下是Apache访问日志消息)其余的是关于系统日志消息本身的元数据.

但是,当我阅读RFC 5424时,消息示例如下所示:

没有结构化数据

 <34>1 2003-10-11T22:14:15.003Z mymachine.example.com su - ID47 - BOM'su root' failed for lonvick on /dev/pts/8
Run Code Online (Sandbox Code Playgroud)

或结构化数据

<165>1 2003-10-11T22:14:15.003Z mymachine.example.com evntslog - ID47 [exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"] BOMAn application event log entry...
Run Code Online (Sandbox Code Playgroud)

所以现在我有点困惑.什么是正确的系统日志消息格式?这是RFC 5424废弃RFC 3164的规范版本问题?

syslog rsyslog syslog-ng

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

rsyslogd和字符#012和#015

我使用rsyslogd 5.8版.字符\n和\ r \n在日志文件中转储为#012和#015.

示例(输入命令:printf"example-test [\ r \n]"| logger):

<13> 2014-07-07T11:01:03.254 root:  example-test[#015]
Run Code Online (Sandbox Code Playgroud)

我宁愿用十六进制转储它们:#0A和#0D(或其他更易读的格式).

我怎么能通过修改rsyslogd配置文件来做到这一点?

rsyslog

12
推荐指数
1
解决办法
1万
查看次数

Logstash vs Rsyslog用于日志文件聚合

我正在研究从CentOs 6.x服务器集中日志文件聚合的解决方案.在安装Elasticsearch/Logstash/Kibana(ELK)堆栈之后,我遇到了一个Rsyslog omelasticsearch插件,该插件可以以logstash格式从Rsyslog向Elasticsearch发送消息,并开始问自己为什么需要Logstash.

Logstash有许多不同的输入插件,包括接受Rsyslog消息的插件.是否有理由将Logstash用于我需要从多个服务器收集日志文件内容的用例?此外,将消息从Rsyslog发送到Logstash是否有好处,而不是将它们直接发送到Elasticsearch?

rsyslog logstash

12
推荐指数
1
解决办法
1万
查看次数

如何配置syslog以便应用程序日志转到特定文件

我有一个应用程序myapp应该日志文件发送/var/log/myapp.log.myapp是用C++编写的.以下示例代码仅将日志发送到/ var/log/syslog.我的操作系统是Linux - Ubuntu 12.04 - 具体而言.我还发现我的机器安装了rsyslog而不是syslog.

#include <stdio.h>
#include <unistd.h>
#include <syslog.h>

int main(void) {
    openlog("myapp", LOG_PID|LOG_CONS, LOG_USER);
    syslog(LOG_INFO, "abc 10");
    closelog();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ linux syslog rsyslog

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

使用rails弹性beanstalk配置rsyslog

我使用弹性beanstalk为rails应用程序配置远程登录.我想从中获取日志,/var/log/puma/puma.log但只获取一些内核和系统信息.这是我的配置.ebextensions/papertrail.config

packages:
  yum:
    rsyslog: []
    rsyslog-gnutls: []
files:
  "/etc/rsyslog.d/01-udp.conf":
    mode: "000640"
    owner: root
    group: root
    content: |
      $ModLoad imudp
      $UDPServerRun 514
  "/etc/rsyslog.d/02-papertrail-tls.conf":
    mode: "000640"
    owner: root
    group: root
    content: |
      $DefaultNetstreamDriverCAFile /etc/papertrail-bundle.pem # trust these CAs
      $ActionSendStreamDriver gtls # use gtls netstream driver
      $ActionSendStreamDriverMode 1 # require TLS
      $ActionSendStreamDriverAuthMode x509/name # authenticate by hostname
      $ActionSendStreamDriverPermittedPeer *.papertrailapp.com
  "/etc/rsyslog.d/03-logfile-config.conf":
    mode: "000640"
    owner: root
    group: root
    content: |
      $ModLoad imfile
      $InputFileName /var/log/puma/puma.log
      $InputFileTag api
      $InputFileStateFile api-staging
      $InputFileSeverity error
      $InputFileFacility local3 …
Run Code Online (Sandbox Code Playgroud)

logging ruby-on-rails rsyslog amazon-elastic-beanstalk

11
推荐指数
1
解决办法
438
查看次数

为什么rsyslogd找不到libgcc_s.so.1?

场景:在Ubuntu 12.4 lxc主机上运行debootstrapped Ubuntu 11.4 lxc guest虚拟机(均为64位)

在lxc guest中,rsyslogd经常与SIGABRT崩溃,说明:

libgcc_s.so.1 must be installed for pthread_cancel to work
0334.380551272:7f4128a84700: 
Signal 6 (SIGABRT) occured, execution must be terminated.
Run Code Online (Sandbox Code Playgroud)

我不确定为什么找不到libgcc_s.so.1.如果我运行ldconfig -p:

$# ldconfig -p | grep libgcc
        libgcc_s.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libgcc_s.so.1
        libgcc_s.so.1 (libc6) => /usr/lib32/libgcc_s.so.1
Run Code Online (Sandbox Code Playgroud)

它被列出.这两个链接都是有效的.

我该如何解决这个问题?

编辑:objdump -T输出请求:

/lib/x86_64-linux-gnu/libgcc_s.so.1:     file format elf64-x86-64

DYNAMIC SYMBOL TABLE:
00000000000025d8 l    d  .init  0000000000000000              .init
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.2.5 memset
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.2.5 abort
0000000000000000  w   D  *UND*  0000000000000000              __gmon_start__
0000000000000000  w   D …
Run Code Online (Sandbox Code Playgroud)

ubuntu gcc rsyslog lxc libgcc

10
推荐指数
1
解决办法
2004
查看次数

提高apache日志的精度以包括毫秒

我已修改配置rsyslogd以禁用RSYSLOG_TraditionalFileFormat.但是,apache日志仍然/var/log/apache/error.log只显示第二个精确度.

还有其他需要配置的东西吗?

apache timestamp syslog rsyslog

10
推荐指数
1
解决办法
9851
查看次数

集中式rsyslog:消息的最大大小

我在Ubuntu 12.04上配置了一个集中式系统日志.

我在两台服务器上设置了最大邮件大小

$MaxMessageSize 20k
Run Code Online (Sandbox Code Playgroud)

我有2种不同的比例:

  • 客户端:消息以完整方式记录
  • server:消息被截断为2k

我可以找到任何其他缓冲区大小的配置.

是rsyslog的限制还是配置问题?

谢谢你的帮助.

弗雷德

rsyslog ubuntu-12.04

10
推荐指数
1
解决办法
1万
查看次数

使用log4j将日志数据写入syslog

我无法将日志消息写入syslog.任何帮助都会很棒.这是我简单的log4j程序

import org.apache.log4j.Logger;
import java.io.*;
import java.sql.SQLException;
import java.util.*;

public class log4jExample
{
  /* Get actual class name to be printed on */
  static Logger log = Logger.getLogger(log4jExample.class.getName());

  public static void main(String[] args) throws IOException,SQLException
  {

     log.error("Hello this is an error message");
     log.info("Hello this is an info message");
     log.fatal("Fatal error message");
  }
}
Run Code Online (Sandbox Code Playgroud)

我的syslog属性文件

# configure the root logger
log4j.rootLogger=INFO, SYSLOG


# configure Syslog facility LOCAL1 appender
log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.threshold=WARN
log4j.appender.SYSLOG.syslogHost=localhost
log4j.appender.SYSLOG.facility=LOCAL4
log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.conversionPattern=[%p] %c:%L - %m%n
Run Code Online (Sandbox Code Playgroud)

linux log4j syslog rsyslog

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