2

我对Java知之甚少,更不用说JASIG CAS了。

我们正在尝试在我们的 CentOS 6 服务器上实现 CAS。我们收到以下错误:

java.io.FileNotFoundException: cas.log (Permission denied)
[...snip...]
java.io.FileNotFoundException: perfStats.log (Permission denied)

经过一番调查,似乎tomcat6正在尝试将日志文件写入其主目录 ( /usr/share/tomcat6/)。我能够确定这一点chown tomcat: /usr/share/tomcat6,然后在重新启动后,在该目录中创建日志文件。

但是,所有其他日志都被写入/usr/share/tomcat6/logs其中,它是/var/log/tomcat6.

我想知道如何重新配置​​ CAS 以将这 2 个日志文件写入不同的目录/usr/share/tomcat6/logs)?

4

1 回答 1

13

假设您有最新版本的 CAS,它使用 log4j 进行日志记录,您可以在

$CATALINA_BASE/webapps/cas-server-webapp-VERSION/WEB-INF/classes/log4j.xml

对于 CentOS 下的标准 Tomcat 安装,$CATALINA_BASE将是/usr/share/tomcat.

如果您的 log4j 配置未更改,您会在文件顶部附近找到一个名为“cas”的附加程序,该附加程序负责创建cas.log. 它看起来像这样:

<appender name="cas" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="cas.log" />
    <param name="MaxFileSize" value="512KB" />
    <param name="MaxBackupIndex" value="3" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %p [%c] - %m%n"/>
    </layout>
</appender>

再往下你会发现另一个名为“fileAppender”的附加程序,它创建了perfStats.log文件。

<appender name="fileAppender" class="org.apache.log4j.FileAppender">
    <param name="File" value="perfStats.log"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%m%n"/>
    </layout>
</appender>

看看File参数的值如何只是一个没有指定目录的文件名?因此,日志文件在 $CATALINA_BASE 目录中创建。要将它们放入所需的 Tomcat 日志目录,只需将值更改为logs/cas.loglogs/perfStats.log

请注意,CAS 仅在启动时读取 log4j 配置,因此一旦您进行了更改,您必须取消部署并重新部署 CAS 或退回 Tomcat 以使其生效。

于 2012-03-01T06:17:00.153 回答