Logging 卡桑德拉:如何归档日志文件

Logging 卡桑德拉:如何归档日志文件,logging,cassandra,archive,Logging,Cassandra,Archive,我已经在Ubuntu机器上安装了Cassandra2.0.11 日志记录配置是默认的。日志文件的位置在中 /var/log/cassandra/ 此外,日志文件已处于旋转模式 如何配置要压缩的日志文件? 因此,它不会消耗大量磁盘存储。对于Cassandra 2.0和更早版本 如果从这里开始执行,可能会看到compress命令。默认情况下,logrotate将使用gzip压缩旋转后的文件。说明您还可以设置compresscmd和compressext以使用自己的压缩应用程序(即zip)。您可能需

我已经在Ubuntu机器上安装了Cassandra2.0.11

日志记录配置是默认的。日志文件的位置在中

/var/log/cassandra/
此外,日志文件已处于旋转模式

如何配置要压缩的日志文件?
因此,它不会消耗大量磁盘存储。

对于Cassandra 2.0和更早版本

如果从这里开始执行,可能会看到compress命令。默认情况下,logrotate将使用gzip压缩旋转后的文件。说明您还可以设置
compresscmd
compressext
以使用自己的压缩应用程序(即zip)。您可能需要编写自己的压缩脚本

例如:

/var/log/cassandra/output.log {
        size 1k
        copytruncate
        create
        compress
        compresscmd /bin/bzip2
        compressext .bz2
        rotate 4
}
适用于卡桑德拉2.1及更高版本

根据,您应该使用
zip
gz
结束
rollingPolicy
中的
fileNamePattern
。就像在这里一样

第二个链接上的Cassandra文档还说:

默认策略在大小超过后滚动system.log文件 20MB。存档文件以zip格式压缩。Logback为日志命名 文件system.log.1.zip、system.log.2.zip等。更多 有关详细信息,请参阅logback文档


答案仅适用于Cassandra 2.0及以上版本。

Cassandra 2.0和更早版本使用log4j作为日志API。 它满足了以下需要:

  • 简单日志记录
  • 旋转日志文件
  • 它不能满足为保存存储位置而压缩\归档旧文件的需要

    为了支持旧日志文件的压缩,您需要使用log4j扩展名(请参阅) 如果您真的想在Cassandra中激活它,您需要执行以下操作:

    sudo vi /etc/logrotate.d/cassandra
    
  • 从源代码安装它
  • 下载log4j extras并将其添加到Cassandra lib目录
  • 使用maven编译项目
  • 显然,你这么做的机会很小。太麻烦了

    有一个简单的解决方案:(仅适用于Linux操作系统)

  • 将Cassandra配置为使用简单日志记录
  • 配置logrotate守护进程来处理日志文件
  • 配置Cassandra以使用简单日志记录

    sudo vi /etc/cassandra/log4j-server.properties
    
    在此文件中更改以下内容:

    # Add the new Appender to the rootLogger
    log4j.rootLogger=INFO,stdout,F,R
    
    # Mark the following configuration (all the RollingFileAppender)
    # rolling log file
    #log4j.appender.R=org.apache.log4j.RollingFileAppender
    #log4j.appender.R.maxFileSize=1MB
    #log4j.appender.R.maxBackupIndex=3
    #log4j.appender.R.layout=org.apache.log4j.PatternLayout
    #log4j.appender.R.layout.ConversionPattern=%5p [%t] %d{ISO8601} %F (line %L) %m%n
    
    #log4j.appender.R.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
    #log4j.appender.R.RollingPolicy.FileNamePattern=cassandra.%d{yyyy-MM-dd-HH}.gz
    #log4j.appender.R.RollingPolicy.ActiveFileName =cassandra.log
    
    # Edit the next line to point to your logs directory
    #log4j.appender.R.File=/var/log/cassandra/cassandra.log
    ########################################################
    
    # Add the new File Appender
    # file appender
    # Define the file appender
    log4j.appender.F=org.apache.log4j.FileAppender
    # Set the name of the file
    log4j.appender.F.File=/var/log/cassandra/cassandra.log
    # Define the layout for file appender
    log4j.appender.F.layout=org.apache.log4j.PatternLayout
    log4j.appender.F.layout.conversionPattern=%5p [%t] %d{ISO8601} %F (line %L) %m%n
    
    现在Cassandra只记录一个文件,不旋转它。接下来

    配置logrotate守护程序以处理日志文件

    如果您真的想知道什么是logrotate:

    请执行以下操作:

    sudo vi /etc/logrotate.d/cassandra
    
    将以下数据添加到文件中:

    /var/log/cassandra/cassandra.log {
        daily
        rotate 50
        size 100M
        copytruncate
        compress
        delaycompress
        missingok
        notifempty
        create 644 cassandra cassandra
    }
    
    就这样。从现在起,logrotate将负责您的日志文件,并将总存储容量保持在5GB以下


    如果要更改存储大小,请根据需要配置旋转和大小。

    Logback是在Cassandra 2.1中引入的,在Cassandra 2.0中是Log4J,但没有注意到。。。我最近开始了一个新项目,从2.1开始,所以我机械地回答如下。。。