标签: 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
查看次数

如何使用 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
查看次数

如何避免来自控制台上打印的 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
查看次数

Python App输出到syslog服务器

我正试图在google上进行一些搜索(每5分钟左右循环一次).当它被命中时,我希望它将结果推送到系统日志服务器.我是python的新手所以请原谅无知,我搜索了很多年,但找不到我的问题的答案.

我打算添加多个查询来查找不同的结果,具体取决于logevent不同的查询结果.

WARN "possible hit"
CRITICAL "definatly a hit"
etc
Run Code Online (Sandbox Code Playgroud)

我希望输出例如:log type,url,date/time

下面是我到目前为止一直在玩的代码.我可以搜索并记录文件,但不是我想要的.我只获得时间和偶数类型的格式,我没有在日志中获得我的查询结果.我不知道如何登录系统日志服务器.

#!/usr/bin/python
import urllib
import simplejson, logging

query = urllib.urlencode({'q' : 'SEARCHTERMHERE'})
url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' \ % (query)
search_results = urllib.urlopen(url)
json = simplejson.loads(search_results.read())
results = json['responseData']['results']
for i in results:
  logging.basicConfig(format='%(asctime)s %(message)s', filename='hits.log')
  logging.warning ('Likley hit')
  print i['url']

#!/usr/bin/python
import urllib
import simplejson 
import logging
from logging.handlers import SysLogHandler

query = urllib.urlencode({'q' : 'SEARCHTERMHERE'})
url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' \
% (query)

search_results = urllib.urlopen(url)
json = simplejson.loads(search_results.read())
results …
Run Code Online (Sandbox Code Playgroud)

python unix system-administration syslog

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

如何限制syslog管理的日志文件的总大小?

如何限制syslog管理的日志文件的总大小?超出此大小限制(配额)时,可能应删除最早的归档日志文件.

一些日志文件是LOG_LOCALn指定的自定义文件,但我想这与配额问题无关.

谢谢!

c linux syslog

5
推荐指数
1
解决办法
6376
查看次数

Docker-如何使用syslog在主机上记录日志?

我希望将容器的日志保存到主机中每个容器的文件中。我阅读了有关通过日志记录驱动程序执行相同操作的信息。

由于我的主机运行ubuntu 14.04 rsyslog(默认情况下已运行),因此我想使用syslog

以下命令用于运行容器:

docker run -it --log-driver=syslog --log-opt syslog-address=udp://localhost:514 prashant23/ubuntu-java:sample-jdbc-project bash
Run Code Online (Sandbox Code Playgroud)

我没有任何错误地进入了容器。就这样?我怎么知道在哪里可以看到主机上的日志?我做对了吗?我不知道syslog。我是否还需要在容器上配置系统日志?有没有更好的方法来达到相同的目的。

我不知道该用什么syslog-address。从哪里可以获取此参数的值?我在某处读取默认值是udp://localhost:514

logging syslog docker

5
推荐指数
1
解决办法
4849
查看次数

如何处理一次性测功机中的原木排干?

我们正在使用heroku的日志流失将日志汇总到Papertrail。一切工作正常,除了,我不确定如何设置一次性测功机的日志记录,我们使用它来运行脚本。

我以为耗油量配置将适用于一次性测功机,但是我没有看到我期望使用heroku调度程序运行的作业的输出。为了弄清楚发生了什么,我尝试运行

# heroku run bash --app myapp
# babel-node
> var logger = require('bunyan/my_configured_logger');
> logger.info('YO');
Run Code Online (Sandbox Code Playgroud)

我希望这会导致原木被运送到纸路,但没有骰子。因此,我尝试了更简单的命令行

> logger "YO" 
Run Code Online (Sandbox Code Playgroud)

而且这也不起作用。因此,要么我的测试被误导了,要么漏极配置不适用于一次性测功机。我认为前者更有可能。

如何测试日志清除(为远程papertrail syslog配置)正常工作?

syslog heroku bunyan papertrail-app

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