标签: syslog

最快的 Ruby 记录器实现是什么?

我想找到 Ruby 提供的最快的记录器。我的直觉告诉我 syslog 会在这场比赛中获胜。但我的直觉似乎是错误的。Syslog 是我测试过的三个记录器中最慢的。我使用的是我的 MacBook Pro、OSX 10.6 (Snow Leopard)、Intel Core2 Duo、4GB 内存和由 MacPorts 构建的 Ruby 1.8.7。难道我做错了什么?或者 Ruby 的 syslog 实现就是这么慢?如果结果与我的不同,请随时发布您的结果。也欢迎您将您最喜欢的 Ruby 记录器添加到基准测试中。我的目标是找到可用的最快的记录器。我只对纯性能(吞吐量)感兴趣。像多目标日志记录这样的功能在这里不是问题。

# loggers_bench.rb

require 'rbench'
require 'activesupport'
require 'syslog'
require 'logger'

buffered = ActiveSupport::BufferedLogger.new('buffered.log')
logger   = Logger.new('logger.log')
syslog   = Syslog.open('rb_syslog')

TIMES = 10_000

RBench.run(TIMES) do
  column :syslog,    :title => 'Syslog'
  column :logger,    :title => 'Logger'
  column :buffered,  :title => 'ActiveSuppoort::BufferedLogger'


  report '#info' do
    syslog {
      300.times do |i|
        syslog.info "hello #{i}"
      end
    }

    logger {
      300.times do …
Run Code Online (Sandbox Code Playgroud)

ruby comparison benchmarking logging syslog

6
推荐指数
1
解决办法
3365
查看次数

是否有一个强大的syslog的java.util.logging处理程序实现?

我正在考虑将第三方Java应用程序连接到我们的日志聚合/分析解决方案(可能是Splunk,但我们还没有完成我们的选择).将Splunk代理挂钩到syslog似乎是最容易的,所以我正在寻找一种方法将应用程序日志重定向到服务器上的本地syslog守护程序.

Java应用程序使用java.util.logging,遗憾的是它没有开箱即用的syslog处理程序(我相信log4j确实如此).有没有经过验证的库可以做到这一点?日志负载不是很大(每个进程大概每分钟10-20条消息,每个主机最多6个进程)但是我关注可靠性和持久性(例如当守护进程停止时会发生什么?...).

任何帮助,将不胜感激...

java logging syslog java.util.logging

6
推荐指数
1
解决办法
6047
查看次数

Logback SyslogAppender stacktrace日志记录前缀

我们最近从Log4J切换到Logback.除了SyslogAppender中的堆栈跟踪外,日志记录似乎运行良好.它们的前缀就像剩余的日志消息一样.

有没有办法如何禁用此前缀并确保它们将像Log4J SyslogAppender一样打印?提前致谢.

目前的行为:

Apr 02 12:31:08 host.name 2012-04-02T12:31:08.418+0200 ajp-bio-8009-exec-7 com.gooddata.exception.servlet.HttpExceptionTranslator ERROR: Processing client_request=/gdcwebapp/gdc/projects/FoodMartDemo/groups/everyone status=FAILED errorCode=gdc.usergroups.default_group_modification errorDescription="Attempt to modify default group (everyone)" exceptionId=abc37cf0-9c56-4e68-a4a7-2111ca823fd4 component=webapp request_id=cAWvICOaKVFF1VvI userId=1 projectId=FoodMartDemo nodeId=nodeOne nodeId=nodeOne, requestId=cAWvICOaKVFF1VvI, userId=1, projectId=FoodMartDemo
Apr 02 12:31:08 host.name #011at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Apr 02 12:31:08 host.name #011at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
Apr 02 12:31:08 host.name #011at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Apr 02 12:31:08 host.name #011at java.lang.reflect.Method.invoke(Method.java:601)
Apr 02 12:31:08 host.name #011at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212)
Apr 02 12:31:08 host.name #011at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
Apr 02 12:31:08 host.name #011at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
Apr 02 12:31:08 host.name #011at …
Run Code Online (Sandbox Code Playgroud)

java syslog logback

6
推荐指数
1
解决办法
4175
查看次数

如何使用 log4j 在 syslog 中整合多行日志

我正在使用 rsyslog 将我的 var/log/message 提供给工具。但是,正如您所看到的,异常出现在多行(每行的时间戳不同)中,而不是记录为单行。我希望它看起来像 catalina.out 消息。有什么办法可以做到这一点。任何帮助将不胜感激。

catalina.out 看起来像这样:

at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
Run Code Online (Sandbox Code Playgroud)

var/log/message 看起来像这样

2014-02-20T06:21:32.006782+00:00 something148-084-115 at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
2014-02-20T06:21:32.006782+00:00 something148-084-115 at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
2014-02-20T06:21:32.006784+00:00 something148-084-115 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
2014-02-20T06:21:32.006784+00:00 something148-084-115 at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
2014-02-20T06:21:32.006786+00:00 something148-084-115 at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
Run Code Online (Sandbox Code Playgroud)

log4j.xml -

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
   <appender name="console" class="org.apache.log4j.ConsoleAppender">
      <param name="Target" value="System.out" />
      <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{ISO8601} abc: [component=&quot;XYZ&quot; priority=&quot;%p&quot; thread=&quot;%t&quot;] %c.%M:%L - %m%n" /> …
Run Code Online (Sandbox Code Playgroud)

java log4j syslog rsyslog

6
推荐指数
1
解决办法
1267
查看次数

如何将系统日志输出发送到标准输出?

我在我的程序中使用 syslog 来生成日志消息。

有没有办法将我的程序的系统日志输出发送到 stdout ?

我不想使用tail命令查看我的程序日志,我想直接在控制台上查看它

c linux bash shell syslog

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

Java 到 rsyslog:STDOUT 还是 syslog?

理解rsyslog是,它是一个syslog在Ubuntu机服务器实现常见。

此外,我的理解rsyslog可用于挂钩/捕获STDOUT输出以及标准syslog消息。

最后,我的理解是,rsyslog然后可以将任何捕获的消息(再次来自客户端STDOUTsyslog客户端)转发到另一台服务器,例如日志聚合器或另一台rsyslog服务器等。

所以首先,如果我上面所说的有任何不正确,请首先纠正我对如何syslog/rsyslog工作及其相互关系的理解!

如果我的假设或多或少是正确的,那么给出以下两个选项:

  • 选项#1:登录STDOUT并配置rsyslog以捕获该流并将日志消息转发到远程进程(例如日志聚合器);或者
  • 选项#2:登录syslog并配置rsyslog以捕获它并将日志消息转发到同一个远程进程

鉴于这两个选项,我更喜欢#1,因为:

  • 在本地或从 IDE 运行时,STDOUT将打印到控制台;和
  • 在任何非本地环境中运行时,STDOUT只会被“收集”rsyslog

如果我选择选项 #2,在本地运行时我会失去控制台可见性。

话虽如此,是否有任何安全/性能/其他问题/警告/陷阱从登录到STDOUT会使选项 #2 更具吸引力/可取?如果有,它们是什么?

java logging syslog rsyslog logstash

6
推荐指数
1
解决办法
4851
查看次数

Python在Windows上导入syslog

我有一个通常在unix机器上运行的python脚本,我试图在Windows上运行它.我遇到的一个障碍是模块syslog.有没有人知道我可以在Windows机器上解决这个问题,是否有一个等效的Windows包?运行python 2.7.

syslog python-2.7

6
推荐指数
1
解决办法
5161
查看次数

如何使rsyslogd刷新其缓冲区

我在Linux上运行rsyslogd 5.8.6。网络上的其他系统将其用作记录器。事件发生率非常低,经常会收到远程消息,但直到几分钟后才会写到/ var / log / syslog文件中。

我有一个正在监视文件并在有行可用时对其进行处理的应用程序,我需要更快地响应传入的消息。

我可以想到两种方法:将rsyslogd配置为具有零大小的缓存缓冲区,或者在刷新其缓冲区之前将最大延迟设置为0.5,或者使用一些shell命令告诉rsyslogd“立即刷新缓冲区”。我一直找不到该怎么做。

buffer syslog flush

6
推荐指数
1
解决办法
1607
查看次数

如何避免来自控制台上打印的 syslog 的广播消息

我写了一个小代码,当无法连接到 postgres 数据库时,使用 C Api 将消息发送到系统日志。

int main ( int argc, char **argv )
{
        PGconn *psql;
        PGresult *res;
        int flag = 0;

        openlog ( "postgres", LOG_NDELAY, LOG_SYSLOG );

        psql = PQconnectdb("hostaddr = '127.0.0.0' port = '5432' dbname = 'RtpDb' user = 'rtp_user_99' password = 'rtp_user' connect_timeout = '10'");
        if ( PQstatus(psql) != CONNECTION_OK )
        {
           //Send an event to syslog for DB Connection Failure
           syslog (LOG_EMERG, "%s", PQerrorMessage(psql) )
        }
       closelog ();
       PQclear(res);
       PQfinish(psql);
}
Run Code Online (Sandbox Code Playgroud)

当 postgres 数据库连接失败时,即使在 openlog …

c linux syslog

6
推荐指数
1
解决办法
8115
查看次数

rsyslog 不将消息过滤到单独的日志文件中

不知何故,我无法让这个工作,我需要一些帮助。

我尝试将 systemd 服务写入的 syslog 中的日志过滤到单独的日志文件中。目前我正在使用Debian. 这是我的 rsyslog 配置,/etc/rsyslog.d/19-test.conf包含内容

:msg,contains,"[frontend]"  -/var/log/frontend_app.log
Run Code Online (Sandbox Code Playgroud)

systemd 单元文件的内容:

[Service]
    ExecStart=/opt/test/current/venv/bin/python -m api.tasks.frontend_app
    StandardOutput=syslog
    WorkingDirectory=/opt/test/frontend/current
    StandardError=syslog
    User=coco
    ProtectSystem=full
    SyslogIdentifier=[frontend]
Run Code Online (Sandbox Code Playgroud)

现在,当我运行时,服务日志被插入syslog但没有插入/var/log/frontend_app.log但是当我尝试这个时:

logger -p local1.info "[frontend] test message"
Run Code Online (Sandbox Code Playgroud)

消息插入 OK 到/var/log/frontend_app.log.

/etc/rsyslog.conf 内容:

#  /etc/rsyslog.conf    Configuration file for rsyslog.
#
#           For more information see
#           /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html


#################
#### MODULES ####
#################

module(load="imuxsock") # provides support for local system logging
module(load="imklog")   # provides kernel logging support
#module(load="immark")  # …
Run Code Online (Sandbox Code Playgroud)

syslog rsyslog systemd

6
推荐指数
1
解决办法
4605
查看次数