Datastax Cassandra 2.2.5:更改日志记录位置(logback)

时间:2016-04-29 10:09:23

标签: cassandra datastax

我在ubuntu服务器上使用datastax cassandra 2.2.5。 日志配置似乎位于" /etc/cassandra/logback.xml"文件。在此xml中,日志文件的目标文件夹是通过" $ {cassandra.logdir}" 属性设置的。我应该在哪里配置/更改此属性,以便我可以提供自定义文件夹位置?我做的不是'希望我的日志转到默认位置" / var / log / cassandra"。

我也试过用cassandra-env.sh更新了 " JVM_OPTS =" $ JVM_OPTS -Dcassandra.logdir = / data / log" 但现在有两个系统设置不同的文件夹。因此,我的文件夹位置不会覆盖默认文件夹。 谢谢 jaskaran

1 个答案:

答案 0 :(得分:3)

在阅读了logback文档之后确定:http://logback.qos.ch/manual/configuration.html#variableSubstitution

它表示 logback.xml 中的变量按照以下顺序针对不同的范围进行解析:

  • 本地范围
  • 上下文范围
  • 系统范围

在我们的例子中,它是使用的系统范围。

cassandra.logdir /usr/sbin/cassandra exec文件本身内设置:

launch_service()
{
    pidpath="$1"
    foreground="$2"
    props="$3"
    class="$4"
    cassandra_parms="-Dlogback.configurationFile=logback.xml"
    cassandra_parms="$cassandra_parms -Dcassandra.logdir=/var/log/cassandra"
    cassandra_parms="$cassandra_parms -Dcassandra.storagedir=$cassandra_storagedir"
...
...

如您所见, storagedir 变量可以由用户定义(在文件/usr/share/cassandra/cassandra.in.sh中),但似乎 cassandra.logdir 是硬编码的。

只需在那里更改或添加变量$cassandra.logdir,这样您就可以在/usr/share/cassandra/cassandra.in.sh中定义它,这比修改cassandra exec更不突兀