2

我正在使用我自己的启动脚本启动一个 Cassandra 实例,该脚本设置 CASSANDRA_CONF 目录(位于 CASSANDRA_HOME 目录之外)。

export CASSANDRA_CONF=/path/to/conf
cassandra -f -Dcassandra.config=file://path/to/yaml

当该过程开始时,我注意到日志不尊重我的 log4j-server.properties 文件。经过进一步调查,似乎 log4j-server.properties 文件没有被拾取,即使对它的引用出现在 Cassandra 生成的命令行参数中:

-Dlog4j.configuration=log4j-server.properties

在脚本中,我输出了 log4j-server.properties 文件的内容,以确保它至少是从正确的位置读取的,并且确实如此。我是否缺少一些配置选项使 Cassandra 从 log4j-server.properties 文件中读取?

4

1 回答 1

3

你运行的是哪个版本?如果您运行的是 2.1+(当前不是一个稳定的版本),则从 log4j 切换到 logback,您的旧配置文件将不再影响任何内容。

Logback 是通过 xml 文件配置的,您必须使用的参数是-Dlogback.configurationFile=logback.xml

有关交换机的更多详细信息,请点击此处

这是当前签入的示例配置。

<configuration scan="true">

  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>/var/log/cassandra/system.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>/var/log/cassandra/system.log.%i.zip</fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>20</maxIndex>
    </rollingPolicy>

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>20MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
      <!-- old-style log format
      <pattern>%5level [%thread] %date{ISO8601} %F (line %L) %msg%n</pattern>
      -->
    </encoder>
  </appender>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%-5level %date{HH:mm:ss,SSS} %msg%n</pattern>
    </encoder>
  </appender>

  <root level="INFO">
    <appender-ref ref="FILE" />
    <appender-ref ref="STDOUT" />
  </root>

  <logger name="com.thinkaurelius.thrift" level="ERROR"/>
</configuration>
于 2014-02-14T01:34:30.117 回答